#!/usr/bin/env perl use Modern::Perl; sub bpow { map { my $m = unpack("b*", pack("i*",$_)); $m =~ s/0/\0/g; $m =~ s/1/~"\0"/ge; $m & $_[0]; } 0..2**length($_[0])-1 } say join ("\n", bpow 'ABCD');