使用tar-> write()时,我在使用复杂文件名时遇到错误。
代码是:
my $filename= $archive_type."_".$from_date_time."_".$to_date_time."tar";
$tar->write($filename);
我得到的错误是: 无法为'postProcessProbe_2010 / 6/23 / 3_2010 / 6/23 / 7.tar'创建文件句柄:
test.pl第24行没有这样的文件或目录
如果我将$ filename更改为像out.tar这样的简单字符串,一切正常。
答案 0 :(得分:4)
好吧,/
是* nix系统上的目录分隔符(并且,内部Windows可互换地处理/
和\
)并且我相信tar
文件,无论平台如何在内部使用它作为目录分隔符。
我认为您无法在* nix或基于Windows的系统上创建包含/
的文件名。即使你可以,这可能会在未来产生一大堆麻烦。
我谦虚地认为切换到更加清晰的日期格式,例如YYYYMMDD
。
此外,当sprintf
更加清晰时,您正在使用字符串连接:
my $filename= sprintf '%s_%s_%s.tar', $archive_type, $from_date_time, , $to_date_time;