检查文件是否具有zip扩展名



我的脚本:

#!/usr/local/bin/perl
use POSIX qw(strftime);
use strict;
use warnings;
use Getopt::Long;
##input parameters
my ($artifact,$package_id);
GetOptions("artifact=s" =>$artifact,
       "package_id=i" => $package_id);
if($artifact =~ /.zip$/i)
    {
    chdir("/apps/checkout/artifactory/xxkintana/$package_id");
    unzip  $artifact;
 }

运行:

/script.pl 4370177 test-1.0.zip

错误:

在的模式匹配(m//)中使用了未初始化的值/script.pl第21行。

请帮我查一下它的zip文件。输入文件,如test-1.0.zip

-Thnaks

您正在检查$artifact是否以.zip结束,但在调用脚本时实际上并没有设置它。

./script.pl --package_id=4370177 --artifact=test-1.0.zip

我建议您清理选项的解析,这样您就可以真正进行一些错误检查。

#!/usr/local/bin/perl
use strict;
use warnings;
use POSIX qw(strftime);
use Getopt::Long;
##input parameters
GetOptions(
    "artifact=s"   => my $artifact,
    "package_id=i" => my $package_id,
) or usage();
usage("Unknown arguments: @ARGVn") if @ARGV;
usage("--artifact is requiredn") if ! $artifact;
usage("--package_id is requiredn") if ! $package_id;
if ($artifact =~ /.zip$/i) {
    chdir("/apps/checkout/artifactory/xxkintana/$package_id");
    unzip  $artifact;
}
sub usage {
    my $message = shift;
    die "${message}Usage: ./$0 --artifact=<artifact> --package_id=<id>n";
}

最后,我可能会进行额外的错误检查,以确保您尝试chdir的目录存在,$artifact存在,并为这些情况以及您能想到的任何其他情况抛出适当的错误消息。

最新更新