我第一次使用Perl。
我正在编写两个脚本,其中一个是从另一个脚本调用的。
当我从用户输入传递参数时,它会给出错误,但如果我对值进行硬编码就可以正常工作。
请告知如何解决。
代码:
script.pl
use warnings;
my ($choice);
print("Hello!\n");
print("If you want to Generate Add, enter 1.\n");
print("If you want to exit,enter 2.\n");
$choice = <>;
chomp($choice);
if ($choice eq "1") {
print "Please enter 1st argument:";
$inputFile = <STDIN>;
print "Please enter 2nd argument:";
$outputFile = <STDIN>;
system($^X, "generateLdifAdd.pl", $inputFile, $outputFile);
}
elsif ($choice eq "2") {
exit();
}
else {
print("$choice is an invalid response.\n");
}
答案 0 :(得分:3)
您可能需要输入chomp
:
chomp($inputFile = <STDIN>);
chomp($outputFile = <STDIN>);
另外,请不要忘记在每个脚本的顶部加use strict;
和use warnings;
。
答案 1 :(得分:0)
有人已经提到需要从STDIN chomp
读取。
我是否正确地认为你已经对你得到的价值做了print
,他们看起来都很好?
我可以建议下一个停靠端口是检查您传递给第二个脚本的命令行吗?
我建议简单如下:
print "$^X generateLdifAdd.pl $inputFile $outputFile\n";
检查看起来是否合适 - 可能是您的“其他”脚本不在路径中。或者它没有正确解析您的命令行参数。 (你不举一个例子,所以很难说)。这也会突出显示不使用chomp
的问题 - 你的args包含换行符。