命令行参数不起作用

时间:2014-04-14 07:57:39

标签: perl

我第一次使用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");
}

2 个答案:

答案 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包含换行符。