从JavaScript调用Perl脚本

时间:2014-07-09 10:47:06

标签: javascript perl

我想从JavaScript调用Perl脚本。 Perl脚本将文件从一个文件夹移动/复制到另一个文件夹。但是,当我试着打电话时,它没有运行。

我是这个领域的新手,所以对我有一点帮助。

copy_file.pl

#!/usr/bin/env perl
use strict;
use warnings;

use File::Copy;

my $source_dir = "/home/Desktop/file";
my $target_dir = "/home/Desktop/Perl_script";

opendir(my $DIR, $source_dir) || die "can't opendir $source_dir: $!";  
my @files = readdir($DIR);

foreach my $t (@files) {
  if (-f "$source_dir/$t" ) {
    # Check with -f only for files (no directories)
    copy "$source_dir/$t", "$target_dir/$t";
  }
}

closedir($DIR);

home.html的

<!DOCTYPE html>
<html>
  <body>
    <h1>My First JavaScript</h1>
    <p>Click Date to display current day, date, and time.</p>
    <button type="button" onclick="myFunction()">Date</button>
    <p id="demo"></p>
    <script>
      function myFunction() {
        document.getElementById("demo").innerHTML = Date();
        $.get("copy_file.pl");
      }
    </script>
  </body>
</html> 

2 个答案:

答案 0 :(得分:2)

这看起来像CGI / Apache问题。要使Perl代码在Apache环境中正确运行,您需要返回Content Type标头作为代码输出的第一件事。尝试使用看起来更像这样的代码......

#!/usr/bin/env perl

use strict;
use warnings;

print "Content-Type: text/html\n\n";

use File::Copy;
use CGI::Carp qw(fatalsToBrowser); #nice error handling, assuming there's no major syntax issues that prevent the script from running

my $source_dir = "/home/Desktop/file";
my $target_dir = "/home/Desktop/Perl_script";

opendir(my $DIR, $source_dir) || die "can't opendir $source_dir: $!";  
my @files = readdir($DIR);

foreach my $t (@files) {
  if (-f "$source_dir/$t" ) {
    # Check with -f only for files (no directories)
    copy "$source_dir/$t", "$target_dir/$t";
  }
}

closedir($DIR);

print "<h1>OK</h1>\n";
print "<p>Print</p>\n";

__END__

此外,不用说,您需要确保脚本还需要在文件系统上标记为可执行文件,并且Apache需要具有运行它的priv。检查完所有这些后,从URL行运行脚本,以确保在尝试从JavaScript调用脚本之前获得某种输出。

从JavaScript的角度来看,如果您希望JavaScript代码正常工作,您还需要包含指向jQuery的链接,正如Quentin正确指出的那样。尝试在Body部分上方添加以下标题部分(和include)...

<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>

答案 1 :(得分:1)

如果您查看JavaScript错误控制台,您会发现抱怨$未定义。

您似乎正在尝试使用jQuery,您需要在页面中包含该库,然后才能使用它提供的功能。

<script src="path/to/where/you/put/jquery.js"></script>