如果目标目录不存在,如何强制提取失败?
Posted
技术标签:
【中文标题】如果目标目录不存在,如何强制提取失败?【英文标题】:How do I force extraction to fail if the destination directory doesn't exist? 【发布时间】:2016-01-18 18:32:13 【问题描述】:我正在使用 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;
如果目标目录不存在,我该如何强制执行?
【问题讨论】:
可以使用类似:die "$deployDir does not exist" unless -d $deployDir
【参考方案1】:
模块中没有任何内容允许您禁用目录的自动创建,因此您只需在 extract
调用之前的单独语句中检查它
-d $deployDir or die Deployment directory "$deployDir" doesn't exist;
或者您可以使用autodie
并尝试将其作为目录打开。这样,系统将为您生成die
消息。像这样
use autodie;
opendir my ($dh), $deployDir;
这需要 Perl v5.10.1 或更高版本。代码周围的大括号 ...
是必需的。它们限制了autodie
的范围,并立即再次自动关闭目录句柄
【讨论】:
以上是关于如果目标目录不存在,如何强制提取失败?的主要内容,如果未能解决你的问题,请参考以下文章