my $amount = shift; my $regex = join "", map { "(1{$_})*" } @ARGV; my $incr_x = qr/(?{$x++})/; local $x; (1 x $amount) =~ /^$regex(?:$)$incr_x(?!)/; print "$x\n";