⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setobject.pl

📁 SinFP是一种新的识别对方计算机操作系统类型的工具
💻 PL
字号:
#!perl#################################################################################                                                                           ####    Copyright (c) 2000 - 2004 by Steffen Beyer.                            ####    All rights reserved.                                                   ####                                                                           ####    This program is free software; you can redistribute it                 ####    and/or modify it under the same terms as Perl itself.                  ####                                                                           ########################################################################################################################################################                                                                    ## How to emulate the Set::Object module using Bit::Vector (example): ##                                                                    #######################################################################package InheritMe;use strict;use vars qw( @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION );require Exporter;@ISA         = qw(Exporter);@EXPORT      = qw();@EXPORT_OK   = qw( RegisterMe ID2Obj Obj2ID Registered );%EXPORT_TAGS = (all => [@EXPORT_OK]);$VERSION     = 1.0;my $ID      = 0;my(%id2obj) = ();my(%obj2id) = ();sub RegisterMe{    my($self) = @_;    if (exists $obj2id{$self})    {        warn "Object '$self' has already been registered!\n";        return $obj2id{$self};    }    else    {        $id2obj{$ID} = $self;        $obj2id{$self} = $ID;        return $ID++;    }}sub ID2Obj{    my($self,$id) = @_;    return exists($id2obj{$id}) ? $id2obj{$id} : undef;}sub Obj2ID{    my($self) = @_;    return exists($obj2id{$self}) ? $obj2id{$self} : undef;}sub Registered{    return $ID;}package main;use strict;use Date::Calc::Object;use Bit::Vector::Overload;push( @Date::Calc::ISA, 'InheritMe' ); # (make Date::Calc a subclass)InheritMe->import(':all'); # (as a convenience for dealing with non-objects)Date::Calc->date_format(2);my $today     = Date::Calc->today();my $yesterday = $today - 1;my $tomorrow  = $today + 1;print "\nDates:\n";print "'$yesterday' has got ID #", $yesterday->RegisterMe(), "\n";print "'$today' has got ID #",         $today->RegisterMe(), "\n";print "'$tomorrow' has got ID #",   $tomorrow->RegisterMe(), "\n";my $pears   = 50;my $apples  =  1;my $oranges = 'out of stock';print "\nFruit:\n";print "\$pears ('$pears') has got ID #",     RegisterMe(\$pears),   "\n";print "\$apples ('$apples') has got ID #",   RegisterMe(\$apples),  "\n";print "\$oranges ('$oranges') has got ID #", RegisterMe(\$oranges), "\n";my $set1 = Bit::Vector->new(&Registered);my $set2 = Bit::Vector->new(&Registered);$set1->Bit_On( $today->Obj2ID()  );$set1->Bit_On( Obj2ID(\$pears)   );$set1->Bit_On( Obj2ID(\$apples)  );$set1->Bit_On( Obj2ID(\$oranges) );$set2->Bit_On( $yesterday->Obj2ID() );$set2->Bit_On( $today->Obj2ID()     );$set2->Bit_On( $tomorrow->Obj2ID()  );$set2->Bit_On( Obj2ID(\$oranges)    );print "\nSet #1:\n";print "<",      join      (          '> <',          map          (              ref($_) =~ /^[A-Z]+$/ ? "${$_}" : "$_",              map              (                  InheritMe->ID2Obj($_),                  $set1->Index_List_Read()              )          )      ),      ">\n";print "\nSet #2:\n";print "<",      join      (          '> <',          map          (              ref($_) =~ /^[A-Z]+$/ ? "${$_}" : "$_",              map              (                  InheritMe->ID2Obj($_),                  $set2->Index_List_Read()              )          )      ),      ">\n";my $intersection = $set1 & $set2;print "\nIntersection:\n";print "<",      join      (          '> <',          map          (              ref($_) =~ /^[A-Z]+$/ ? "${$_}" : "$_",              map              (                  InheritMe->ID2Obj($_),                  $intersection->Index_List_Read()              )          )      ),      ">\n";__END__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -