我的目的是从Parent.pl脚本调用Child.pl脚本
我使用system()函数调用其他脚本 使用时
system("perl Child.pl $argument");
参数传递。
但是在使用时
system("Child.pl $argument");
参数未通过。
这是因为代码中的任何错误。
我是perl脚本的新手。如果我有任何错误,请原谅我。
我使用的是Windows 7,我的perl版本是v5.8.4
我的Parent.pl脚本是
use warnings;
print "Inside Parent Script\n\n";
$var = 10;
print "Calling system without perl prefix\n";
system("Child.pl $var");
print "\nCalling system with perl prefix\n";
system("perl Child.pl $var");
print "\nEnd of Parent Script\n";
exit 0;
我的Child.pl脚本是
use warnings;
print "\tInside Child Script\n";
print "\tArgument = $ARGV[0] \n";
print "\tEnd of Child Secipt\n";
exit 0;
我的输出是
Inside Parent Script
Calling system without perl prefix
Inside Child Script
Use of uninitialized value in concatenation (.) or string at C:\Child.pl line 4.
Argument =
End of Child Script
Calling system with perl prefix
Inside Child Script
Argument = 10
End of Child Script
End of Parent Script
似乎在某些PC上它的工作没有perl前缀
我正在处理一大堆不使用perl前缀的脚本。
有什么方法可以保持这些脚本完好无损,并仍然让参数通过。
答案 0 :(得分:0)
首先:
在两个脚本中添加shebang行。
第二
提供您的子脚本的完整路径。
第三
确保两个脚本都是可执行的。
Parent.pl:
#!/usr/bin/perl
use warnings;
print "Inside Parent Script\n\n";
$var = 10;
print "Calling system without perl prefix\n";
system("./Child.pl $var");
print "\nCalling system with perl prefix\n";
system("perl Child.pl $var");
print "\nEnd of Parent Script\n";
exit 0;
Child.pl:
#!/usr/bin/perl
use warnings;
print "\tInside Child Script\n";
print "\tArgument = $ARGV[0] \n";
print "\tEnd of Child Secipt\n";
exit 0;
输出:
Inside Parent Script
Calling system without perl prefix
Inside Child Script
Argument = 10
End of Child Secipt
Calling system with perl prefix
Inside Child Script
Argument = 10
End of Child Secipt
End of Parent Script
这也应该适合你。