chdir($workdir) or die "Unable to enter dir $workdir:$!\n"; ... foreach my $name (@names){ ... if (-d $name){ &ScanDirectory($name); <-- This changes chdir. next; <-- Never changed back. } ... } ...