http://www.perlmonks.org?node_id=644059


in reply to opening files where name is a concatenation of variable

open (OUTHANDLE, ">$basedir . /output/file.txt") or die ;
You're trying to open a file that doesn't exist.
perl -le 'print ">$basedir . /output/file.txt"' results . /output/file.txt
There's no concatenating operator there, you clobber them all in one single string, the $basedir, the dot with spaces ( .), and /output/file.txt. Should you use $! variable, Perl would tell you what was wrong.
my $basedir = "results"; my $filename = "$basedir . /output/file.txt"; open (OUTHANDLE, ">$filename") or die "can't open ($filename): $!\n"; can't open (result . /output/file.txt): No such file or directory
You actually want,
open (OUTHANDLE, ">$basedir" . "/output/file.txt") or die $!;
but this is not good although it probably works. Use suggestions from other replies.

Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!