my @data = qw( 000- 0101 011- 1-0- ); #### my @data = qw( 0 1 5 6 7 8 9 12 13 ); #### sub to_binary { my $str = shift; my $value = 0; for (my $ii=0; $ii## for (my $ii=0; $ii<@data; $ii++) { if (@data[$ii] =~ /-/) { splice(@data, $ii, 1, bits(@data[$ii])); } } sub bits { my $str = shift; if ($str =~ /-/) { if (substr($str, $ii, 1) eq '-') { bits( substr($str, $ii, 1, '0' ); bits( substr($str, $ii, 1, '1' ); # somehow don't return anything... ???? } } else { return $str; } }