my $bitfield = 1;
my $modifier = '+2+16+1024';
my @fields = ( $modifier =~ m{ ([+-]) (\d+) }gxms ); # extract mods
while ( @fields >= 2 ) { # for each modification
my $op = shift @fields;
my $value = shift @fields;
if ( $op eq '+') {
$bitfield |= $value; # set a bit w/ OR
}
}
print "bf: $bitfield\n";
__END__
bf: 1043
####
my $bitfield = '1';
####
my $bitfield = '1'; $bitfield = 0+$bitfield;