[Vienna-pm] pseudo-bitmask to ints
ReneeB
mailinglisten at renee-baecker.de
Tue Oct 23 07:38:38 PDT 2007
Hi,
Deins und meins gemischt (funktioniert ganz gut):
#!/usr/bin/perl
use strict;
use warnings;
pseudobitmask2ints('00?1'); # (1,3)
pseudobitmask2ints('1??1'); # (9,11,15,16)
pseudobitmask2ints('0100'); # (4)
pseudobitmask2ints('0100??'); # (4)
sub p2i {
my ($todo,$done)=@_;
$done=[] unless $done;
foreach my $string (@$todo) {
my $one=my $zero=$string;
$one=~s/\D/1/;
$zero=~s/\D/0/;
if ($one=~/\D/) {
p2i([$one,$zero],$done);
}
else {
push(@$done,$one,$zero);
}
}
return $done;
}
sub pseudobitmask2ints{
my ($string) = @_;
my $quest = () = $string =~ /(\?)/g;
unless( $quest ){
print bin2dec($string)," " unless $quest;
}
else{
print bin2dec( $_ )," " for @{ p2i([$string]) };
}
print "\n";
}
sub bin2dec {
return unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
}
--
$foo - Perl-Magazin (http://foo-magazin.de)
Perl-Community.de (http://board.perl-community.de)
Perl-Blog (http://reneeb-perlblog.blogspot.com)
More information about the Vienna-pm
mailing list