如果目标目录不存在,如何强制提取失败?
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
的范围并立即自动再次关闭目录句柄
我正在使用 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
的范围并立即自动再次关闭目录句柄