如何从另一个perl cgi脚本调用perl cgi脚本

时间:2014-07-25 02:27:46

标签: web-services perl api cgi

我有一个cgi脚本,它接受的参数很少,如下所示。

testScript.cgi?arg=1&arg2=SomeThingElse&arg3=otherThing.....

上述脚本效果很好。

现在我有另一个名为mySecondScript.cgi的perl cgi脚本。它做了它自己的事情,但我想用{1}}调用在这个脚本中计算的参数。我怎么做。任何优雅的解决方案将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可能希望使用LWP::Simple来调用第二个程序。在mySecondScript.cgi中你需要这样的东西:

my $output = get("http://someserver.somedomain/testScript.cgi?arg=1&arg2=SomeThingElse&arg3=otherThing");

这将返回CGI程序的输出(即它生成的HTML页面)。如果您想要更好地控制所取得的内容,则需要使用LWP::UserAgent

my $ua = LWP::UserAgent->new;
my $resp = $ua->get("http://someserver.somedomain/testScript.cgi?arg=1&arg2=SomeThingElse&arg3=otherThing");

$resp将成为HTTP::Response个对象。

或者,如果你的两个程序都在本地运行,那么将testScript.cgi的重要部分重构为一个你可以在mySecondScript.cgi中加载和使用的模块可能会更方便。

答案 1 :(得分:-1)

有几种方法可以调用"系统调用"从perl脚本里面。这可能是任何shell操作或甚至是另一个perl脚本。我最喜欢的是qx / [command] /

看看这个迷你示例,看看它是如何工作的

my $result = qx/pwd/;
print "result: $result\n";

pwd是一个shell命令,就像你的情况一样,例如

my $result = qx/mySecondScript $param1 $param2/;

这样您甚至可以将结果从内部脚本传递到外部脚本。其他方式可能是反击或者#34;系统"命令,但qx是我个人的最爱。