Normally perl ignores trailing blanks in filenames, and interprets certain leading characters (or a trailing "|") to mean something special. To avoid this, you might want to use a routine like this. It makes non-fullpathnames into explicit relative ones, and tacks a trailing null byte on the name to make perl leave it alone:
sub safe_filename {
local($_) = shift;
m#^/# ? "$_\0" : "./$_\0";
}
$fn = &safe_filename("<<<something really wicked ");
open(FH, "> $fn") || "couldn't open $fn: $!";
Other resources at this site: