Current Perl documentation can be found at perldoc.perl.org.
Here is our local, out-dated (pre-5.6) version:
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 incomplete pathnames into explicit relative ones, and tacks a trailing null byte on the name to make perl leave it alone:
sub safe_filename { local $_ = shift; return m#^/# ? "$_\0" : "./$_\0"; }
$fn = safe_filename("<<<something really wicked "); open(FH, "> $fn") or "couldn't open $fn: $!";
You could also use the
sysopen()
function (see sysopen).