如果目标目录不存在,如何强制提取失败?

时间:2016-01-18 18:32:13

标签: perl extract archive

我正在使用Perl 5.16.3和Archive::Extract

我正在提取一个zip文件,但如果目标目录不存在,我希望Perl失败(死亡)。目前,下面的代码不会失败,但会在提取之前创建目录

use Archive::Extract;
...

my $ae = Archive::Extract->new( archive => $downloadedFile, type => 'zip' );
my $ok = $ae->extract( to => $deployDir ) or die $ae->error;

如果目标目录不存在,我怎么能强迫死?

1 个答案:

答案 0 :(得分:0)

模块中没有任何内容可以禁止自动创建目录,因此您只需在extract调用之前的单独语句中进行检查

-d $deployDir or die {Deployment directory "$deployDir" doesn't exist};

或者您可以使用autodie并尝试将其作为目录打开。这样系统就会为您生成die消息。喜欢这个

{
    use autodie;
    opendir my ($dh), $deployDir;
}

这需要Perl v5.10.1或更高版本。代码周围的大括号{ ... }是必需的。它们限制autodie的范围并立即再次自动关闭目录句柄