Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如果目标目录没有';不存在?_Perl_Extract_Archive - Fatal编程技术网

Perl 如果目标目录没有';不存在?

Perl 如果目标目录没有';不存在?,perl,extract,archive,Perl,Extract,Archive,我将Perl 5.16.3与 我正在提取一个zip文件,但是如果目标目录不存在,我希望Perl失败(死亡)。目前,下面的代码没有失败,但在提取之前创建了目录 use Archive::Extract; ... my $ae = Archive::Extract->new( archive => $downloadedFile, type => 'zip' ); my $ok = $ae->extract( to => $deployDir ) or die $ae

我将Perl 5.16.3与

我正在提取一个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};
或者您可以使用并尝试将其作为目录打开。这样,系统将为您生成一条
die
消息。像这样

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

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

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

-d $deployDir or die {Deployment directory "$deployDir" doesn't exist};
或者您可以使用并尝试将其作为目录打开。这样,系统将为您生成一条
die
消息。像这样

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

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

可以使用类似于:
die“$deployDir不存在”的内容,除非-d$deployDir
可以使用类似于:
die“$deployDir不存在”的内容,除非-d$deployDir