将变量从PHP传递到PERL
我编写这个程序是为了在嵌入式perl脚本中传递一个变量,但它会给出空白输出:-(为什么它不工作。请解决这个问题) php脚本将变量从PHP传递到PERL,php,perl,Php,Perl,我编写这个程序是为了在嵌入式perl脚本中传递一个变量,但它会给出空白输出:-(为什么它不工作。请解决这个问题) php脚本 <?php $var1='high'; exec('C:/xampp/htdocs/WORK/hello.pl'.' '.EscapeShellArg("$var1"),$output); echo ($output); ?> perl脚本 #!/usr/bin/perl -w $var1=<>; print $var
<?php
$var1='high';
exec('C:/xampp/htdocs/WORK/hello.pl'.' '.EscapeShellArg("$var1"),$output);
echo ($output);
?>
perl脚本
#!/usr/bin/perl -w
$var1=<>;
print $var1;
!/usr/bin/perl-w
$var1=;
打印$var1;
因为您试图将数组作为字符串发送…您必须将数组序列化为perl可以反序列化的字符串,如JSON
、XML
、CSV
,等等。一个原因是希望$arg参数的类型为字符串,而在您的情况下,它是一个数组…
$var1 = shift;
不要从标准输入或参数文件中读取值?你确定你的*.pl文件是可执行的吗?试着从命令行执行hello.pl,没有phpyes我做了…它的执行没有任何错误OK,在本地重新创建。
shift
有效,而
无效。我不确定为什么会这样,但是..你有e使用shift
或$ARGV[0]
来获取值-因此..仅用于管道,对于参数,您必须使用ARGVThankyou@VitalyDyatlov我得到了输出:-)实际上,在这一点上,他应该发送数组的字符串表示形式,我认为,因为当他传递它时,他得到了双引号…我更改了“$var1”到“$var1”,但它不起作用:(您是否能够通过命令行调用PERL脚本?它是否生成预期的输出?我们能否获得调用脚本及其生成的输出时使用的参数示例?是的,我能够调用脚本,它确实生成输出。我尝试使用上面发布的同一脚本及其打印“数组”作为输出。否,因为“$var1”变成了“Array”(原始命令如下:C:/xampp/htdocs/WORK/hello.pl“Array”)无论如何都应该有输出。其他地方的问题是真的…有点仓促行事…不管他不会得到他期望的结果,尽管他需要先得到正确通过的var。对不起,我是这个领域的新手…你能告诉我问题出在哪里吗…我想把输入作为字符串,而不是字符串Narray@user1083096:好的。但是让我们一步一步来处理。到现在为止,你一点也不接受。