【问题标题】:Passing variables from PHP to PERL [closed]将变量从 PHP 传递到 PERL [关闭]
【发布时间】:2012-05-29 20:00:42
【问题描述】:

我已经编写了这个程序来在嵌入式 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;

【问题讨论】:

  • 您确定您的 *.pl 文件是可执行的吗?尝试从命令行执行 hello.pl,不使用 php
  • 是的,我做到了....它的执行没有任何错误
  • 好的,在本地重新创建。 shift 有效,&lt;&gt; 无效。我不知道为什么会这样,但是.. 你必须使用 shift$ARGV[0] 来获得价值
  • stackoverflow.com/questions/3745623/… - 所以.. 仅用于管道,对于必须使用 ARGV 的参数
  • 谢谢@VitalyDyatlov 我得到了输出:-)

标签: php perl


【解决方案1】:

怎么样

 $var1 = shift;

而不是从标准输入或参数文件中读取值?

【讨论】:

  • 我想将输入作为字符串,而不是数组
  • @user1083096:好的。但是,让我们一步一步地处理。到现在为止,你根本没有接受它。
【解决方案2】:

因为您试图将数组作为字符串发送...您必须将数组序列化为 perl 可以反序列化的字符串,例如 JSONXMLCSV 等。

【讨论】:

  • 不,因为 "$var1" 变成了 "Array" (原始命令是这样的: C:/xampp/htdocs/WORK/hello.pl "Array" )并且无论如何都应该有输出。其他地方的问题
  • 那是真的...有点过火了...不管他不会得到他期望的结果,尽管他需要先让 var 正确传递。
  • 对不起,我是这个领域的新手……你能告诉我问题出在哪里吗……
【解决方案3】:

一个原因是EscapeShellArg 期望 $arg 参数是字符串类型,而在您的情况下,它是一个数组...

【讨论】:

  • 实际上他应该发送我认为的数组的字符串表示,因为当他传递它时,他用双引号得到它......
  • 我将 "$var1" 更改为 '$var1' 但它不起作用:(
  • 你能通过命令行调用PERL脚本吗?它会产生预期的输出吗?我们能否获取您在调用脚本时使用的参数及其产生的输出的示例?
  • 是的,我可以调用脚本并且它确实会产生输出。我尝试使用上面发布的相同脚本及其打印“数组”作为输出。
猜你喜欢
  • 2013-04-11
  • 1970-01-01
  • 2014-11-30
  • 2011-05-02
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
  • 2018-12-15
  • 1970-01-01
相关资源
最近更新 更多