in reply to Generating IPv6 Masks
sub make_netmask { my $mask = shift; return if $mask < 0 or $mask > 128; my $str = "\0" x 16; vec( $str, 127-$_, 1) = 0b1 foreach 0..$mask-1; return map{ vec $str, $_, 8 } reverse 0 .. 15; } [download]
-Mark