[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