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

How do I force extraction to fail if the destination directory doesn't exist?

我正在使用 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;

如果目标目录不存在,我如何强制结束?

模块中没有任何内容允许您禁用目录的自动创建,因此您只需在 extract 调用

之前在单独的语句中检查它
-d $deployDir or die {Deployment directory "$deployDir" doesn't exist};

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

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

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