use File::pushd; { my $wd = pushd(); chdir('subdir'); # do some work. } # automatically back in original dir