将复杂文件名用于tar时出错 - >写在perl

时间:2010-11-10 14:53:24

标签: perl tar

使用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这样的简单字符串,一切正常。

1 个答案:

答案 0 :(得分:4)

好吧,/是* nix系统上的目录分隔符(并且,内部Windows可互换地处理/\)并且我相信tar文件,无论平台如何在内部使用它作为目录分隔符。

我认为您无法在* nix或基于Windows的系统上创建包含/的文件名。即使你可以,这可能会在未来产生一大堆麻烦。

我谦虚地认为切换到更加清晰的日期格式,例如YYYYMMDD

此外,当sprintf更加清晰时,您正在使用字符串连接:

my $filename= sprintf '%s_%s_%s.tar', $archive_type, $from_date_time, , $to_date_time;