sub cdo(&$){ local $_ = $_[1]; $_[0]->(); $_ } my $foo = 'abc'; print cdo { s/abc/def/ } $foo; print "\n$foo\n";