in reply to Best practices - absolute paths?

I think your update to the OP came sometime after my first reply. I think your concerns are mostly answered by nothingmuch above, but to elaborate a bit, instead of this as your "more efficient" method:
chdir($workdir); foreach ($files) { workOnFile(); ## should have $_ as an arg, shouldn't it? }
(where you might want each thread to have its own "$workdir"), you could do it like this:
foreach ( $files ) { workOnFile( "$workdir/$_" ); }
If you think that's less efficient, try benchmarking it and see how much of a hit you take. I haven't actually tested it, but I expect the hit won't amount to much, if it's noticeable at all.