sub changeme{ local $^I = ".$bak"; @ARGV = "somefile"; while (<>) { s/foo/bar/i; print; } } #### sub changeme{ $myvar = somesub(); local $^I = ".$bak"; @ARGV = "somefile"; while (<>) { s/foo/$myvar/i; print; } }