chdir "/home/main/sub/oldfiles"; # or wherever open READ, "$file" # open READ ">$file" is a typo, no? or die "Couldn't open $file to read: $!\n"; # ... Do stuff, ready to write open WRITE1, "> ../newfiles/$file" or die "Couldn't open $file to write: $!\n"; # ..Whatever... open WRITE2, ">../../cgi-bin/$file" or die "Couldn't open $file to write: $!\n";