in reply to Working with Binary Numbers

If you want to stick with a recursive solution:
use Test::More tests => 1; my @data = qw( 000- 0101 011- 1-0- ); my @expected = qw( 0000 0001 0101 0110 0111 1000 1001 1100 1101 ); my @got = map { expand_binary( $_ ) } @data; is_deeply \@got, \@expected; sub expand_binary { my $bin = shift; if ( $bin =~ /-/ ) { ( my $zero = $bin ) =~ s/-/0/; ( my $one = $bin ) =~ s/-/1/; return ( expand_binary( $zero ), expand_binary( $one ) ); } return $bin; }