【问题标题】:How to execute one perl script from website in perl?如何在 perl 中从网站执行一个 perl 脚本?
【发布时间】:2013-05-05 14:18:20
【问题描述】:

我正在尝试运行 perl 脚本来执行某些操作并在 perl 中从 Web 浏览器页面创建文件。我正在使用 Windows 7。

这是来源:

use CGI;
use warnings;
use strict;

print "Content-type:text/html; charset=utf-8\r\n\r\n";

print "<a href='./#'>START</a>";
system("C:\Perl\bin\perl C:\xampp\htdocs\xampp\bc\create_yaml.pl");

当我加载这个页面时,它会打开 cmd,但是我想要运行的文件不会创建任何文件。我怎样才能知道脚本是否运行?以及如何运行这个脚本?

我尝试更改我想要运行的文件的权限,但它仍然不起作用。 感谢您的回答。


我会尝试做一个简单的例子。但它不会创建任何文件...嗯,怎么了?

use CGI;
use strict;
use warnings;

print "Content-Type: text/html; charset=utf-8\n\n";
system("C:\\Perl\\bin\\perl C:\\xampp\\htdocs\\xampp\\vyber\\bc\\test\\create.pl");

create.pl 的来源:

open(INFO,">aaaaaaa.txt");
print INFO "voda";
close INFO;

【问题讨论】:

    标签: perl file cmd cgi


    【解决方案1】:

    我认为你的问题是 Windows 使用 \ 作为路径名,但是当你把它放在引号中时,你需要转义它,因为它是一个特殊字符。你用 \:

    逃脱
    system("C:\\Perl\\bin\\perl C:\\xampp\\htdocs\\xampp\\bc\\create_yaml.pl");
    

    另外,如果您的环境路径变量设置正确,您可以这样做:

    system("perl C:\\xampp\\htdocs\\xampp\\bc\\create_yaml.pl");
    

    或者正如 amon 指出的,您可以使用正斜杠:

    system("C:/Perl/bin/perl C:/xampp/htdocs/xampp/bc/create_yaml.pl");
    

    【讨论】:

    • 更好:使用正斜杠。效果也很好,阅读更轻松。此外,将命令分隔为字符串列表 (system $executable, @args) 通常可能更可取。
    • 我尝试这样做:use CGI; use strict; use warnings; print "Content-Type: text/html; charset=utf-8\n\n"; system("C:\\Perl\\bin\\perl C:\\xampp\\htdocs\\xampp\\vyber\\bc\\test\\create.pl"); create.pl source open(INFO,"&gt;aaaaaaa.txt"); print INFO "voda"; close INFO; 但它不会创建任何文件
    • 如果您使用的是 64 位 Perl,那么您的路径是错误的。很可能是"C:\\Perl64\\bin\\perl。您的一条或两条路径必须不正确。没有其他意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2016-04-07
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 2019-03-07
    相关资源
    最近更新 更多