use 5.032; sub foo { local $!; my $err = shift; say "foo found: '$err'"; } sub bar { my $err = shift; local $!; say "bar found: '$err'"; } open (my $foo, '<', 'doesnotexist.dat') or foo($!); open (my $bar, '<', 'doesnotexist.dat') or bar($!); #### foo found: '' bar found: 'No such file or directory'