sub _save_pwd (&) { my $code = shift; require Cwd; my $pwd = Cwd::cwd(); eval { $code->(); }; my $err = $@; chdir $pwd or die "Can't chdir back to $pwd: $!"; die $err if $err; }