2012-02-20 102 views
0

我是新来的python .. 想知道,如何用cgi脚本中的参数调用python程序。 并且还从python prog中检索返回值。如何从perl cgi脚本调用python程序

我尝试这样做..但没有工作......

my $bin = "/var/www/pythonprog.py"; 
    my @args = ($name1,$pass1); 
    my $cmd = "$bin ".join(" ", @args); 
    $cmd =~ tr///; 
    system ($cmd); 
+0

看起来像一个perl问题?确保你在python文件中有正确的hashbang并设置适当的权限。 – monkut 2012-02-20 08:18:04

+0

系统命令采用一个列表,其中第一个值是可执行文件的路径,其后的每个值都是命令行参数。如果你是perl的新手,请查看这里的perldoc:http://perldoc.perl.org/functions/system.html – GoldenNewby 2012-02-20 08:26:07

+1

出于好奇,你期望'$ cmd =〜tr ///;'做什么? – TLP 2012-02-20 08:33:22

回答

0

系统想要的清单参数。 试试这个:

my $bin = "/var/www/pythonprog.py"; 
my @cmd = ($bin,$name1,$pass1); 
system (@cmd); 

编辑:看起来你有污点的问题,请参见下面的大意见。

+0

不...还是有一个错误.... 软件错误: 不安全$ ENV {PATH}同时用-T开关在/usr/lib/cgi-bin/new.cgi线运行23 如需帮助,请发送邮件给网站管理员(webmaster @ localhost),并提供此错误消息以及错误的时间和日期。 – Jay 2012-02-20 08:32:48

+3

@JayanthSilesh'-T'(污染)安全开关让你知道你的路径没有被正确地去除污染。您可以通过设置路径来解决它,例如'$ ENV {PATH} =“”',结果你必须使用完整路径进行任何系统调用,例如'system(“/ bin/echo foo”)'。 – TLP 2012-02-20 08:40:14

+0

参见:http://docstore.mik.ua/orelly/perl/prog3/ch23_01.htm – AntonioD 2012-02-20 08:40:41