use strict; use warnings; use Test::More; my @cases = ( # Input Expected Description ["int abc;\n", "int abc_1;\n\nint abc_2;\n\n", 'line 1'], [".abc(abc);\n", ".abc_1(abc_1);\n\n.abc_2(abc_2);\n\n", 'line 2'], ); plan tests => scalar @cases; foreach my $case (@cases) { my $line = $case->[0]; my $out = ''; $out .= ($line =~ s/abc/abc_$_/gr) . "\n" for (1,2); is( $out, $case->[1], $case->[2] ); } #### OUTPUT: 1..2 ok 1 - line 1 ok 2 - line 2