use Test::More; my %output_for = ( '215000007801' => '21507801', '300000324002' => '30324002', '890000457651' => '89457651', '210004563401' => '214563401', '201045139158' => '20145139158', ); plan tests => scalar keys %output_for; sub solution { # (this doesn't work) $_[0] =~ s{ \A ([^0]+ 0) ([^0]*) 0+ ([^0]+0) }{$1$2$3}x # || # $_[0] =~ s{ \A ([^0]+) 0+ ([^0]) }{$1$2}x; } while ( my ($input, $correct_output) = each %output_for ) { my $orig_input = $input; solution( $input ); is( $input, $correct_output, "Solved '$orig_input'" ); }