我想调用一个perl script使用java脚本,并传递一个java脚本变量?这个脚本已经被别人写好了。我只想让他们的脚本出现在一些文本上,然后在我的网站上输出结果。问题是脚本需要一个文件作为输入。
perl脚本的用法如下
latexindent.pl [options] [file][.tex]
我想在调用此脚本时传入一个文本框,并将打印到控制台的命令返回到我的 javascript 函数。
function ajax_info() {
$.ajax({
url: "latexindent.pl",
cache: false,
dataType: "text",
data: { mode: 'This is Some text!' },
success: function(result) { ajax_info_result(result); }
});
}
function ajax_info_result(result) {
var text = "The server says: <b>" + result + "</b>";
$('#info').html(text);
}
最佳答案
您提到 CGI 作为标签,所以我假设您没有使用 node.js,在这种情况下您会按照
的方式查看一些内容var exec = require('child_process').exec;
var cmd = 'prince -v builds/pdf/book.html -o builds/pdf/book.pdf';
exec(cmd, function(error, stdout, stderr) {
// command output is in stdout
});
因此,假设您希望在服务器上运行 perl 作为由 Web 服务器执行的 CGI,那么正如 Dinesh 指出的那样,您有 2 个选择。
选项 1:
编辑文件以充当 CGI,并通过配置 CGI 处理程序等使其可通过 Web 服务器进行访问。
基本上你需要: 包含 CGI.pm,提取发布的参数并使用它们代替文件内容。这些内容应该可以帮助您入门。
#!/usr/bin/perl
use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use JSON;
my $cgi = CGI::Carp->new();
my $data = from_json( $cgi->param('mode') ); ## prob need to tweak
## now continue with your processing using $data instead of the file content.
打开2: 创建一个 perl CGI 或配置您的 Web 服务器来处理请求并执行您现有的脚本。
使用类似的代码,但使用 system()、exec 或 `` 方法执行。请务必阅读安全问题以及这些调用方法在捕获输出和注入(inject)安全问题的可能性方面的差异。
关于javascript - 如何将信息从 Web 传递到 Perl 脚本中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32917506/