sub find_string { my ( $file, $string, $negative ) = @_; return 1 if _find_string( $file, $string, $negative ) die "False :Test result is FAIL"; } sub find_without_string { $_[2] = 1; goto &find_string; } sub _find_string { my ($file, $string, $negative) = @_; open my $fh, '<', $file; while (<$fh>) { return !$negative if /\Q$string/; } return $negative; } # Original functionality find_string('search.txt', 'name: abc '); # Inverted functionality find_string('search2.txt', 'name: abc ', 1 ); # or find_without_string('search2.txt', 'name: abc ' );