Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将变量从PHP传递到PERL_Php_Perl - Fatal编程技术网

将变量从PHP传递到PERL

将变量从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

我编写这个程序是为了在嵌入式perl脚本中传递一个变量,但它会给出空白输出:-(为什么它不工作。请解决这个问题)

php脚本

<?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:好的。但是让我们一步一步来处理。到现在为止,你一点也不接受。