use File::chdir qw( $CWD ); use File::Slurp qw( read_dir ); my @dirs = grep -d, read_dir('.'); for (@dirs) { local $CWD = $_; system '/somepath/foo.exe'; } #### use File::Slurp qw( read_dir ); my @dirs = grep -d, read_dir('.'); for (@dirs) { chdir $_ or die; system '/somepath/foo.exe'; chdir '..' or die; }