in reply to recursive call of current script

The for is apparently just being used as a topicalizer here. So if you rewrite the first code example in "normal" Perl, it's

if ( $sFunction =~ /test1/ ) { # ... } if ( $sFunction =~ /test2/ ) { # ... }

So then it becomes more clear that one possibility of several for rewriting the logic is the following, where one could even consider to put $sFunction =~ /test2/ into a variable to avoid invoking the regex engine twice:

if ( $sFunction =~ /test1/ || $sFunction =~ /test2/ ) { # ... if ( $sFunction =~ /test2/ ) { # ... } }

Or, assuming your regexes have something in common like these example regexes, you can even write something like:

if ( my ($num) = $sFunction =~ /test([12])/ ) { # ... if ( $num eq "2" ) { # ... } }