#!/usr/bin/perl -w use strict; my @strings = (''); for my $a (1..10) { for my $b (0..(2**$a-1)) { push @strings, sprintf ("%0".$a."b", $b); } } print "->", join("<-\n->", grep /^(0|1(01*0)*1)*$/, @strings);