package bitflags; use strict; my $i = .5; sub import { my $self = shift; my $caller = (caller)[0]; if ($_[0] =~ /^:start=(\^?)(\d+)$/) { if ($1) { $i = 2 ** ($2-1) } elsif ($2 & ($2 - 1)) { require Carp; Carp::croak("$2 is not a power of two"); } else { $i = $2/2 } shift; } no strict 'refs'; for (@_) { my $j = ($i *= 2); *{"${caller}::$_"} = sub () { $j }; } } 1;