我的剧本:
#!/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
错误:
在./script.pl第21行的模式匹配(m //)中使用未初始化的值。
请帮我找一下它的zip文件。输入文件,如test-1.0.zip
-Thnaks
答案 0 :(得分:1)
您正在检查$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: @ARGV\n") if @ARGV;
usage("--artifact is required\n") if ! $artifact;
usage("--package_id is required\n") 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
存在,并为那些以及您的更多案例抛出相应的错误消息可以想到。