2013-05-10 106 views
0

我想運行Perl腳本,做一些事情,並創建文件從Web瀏覽器頁面在Perl中。我使用Windows 7如何在perl中從網站執行一個perl腳本?

這是來源:

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,但文件我想運行不會產生任何文件的內容。我怎麼知道腳本運行或不運行?以及如何運行這個腳本?

我嘗試更改要運行的文件的權限,但仍然無法運行。 感謝您的回答。


我會盡量做一個簡單的例子。但它不創建任何文件...嗯什麼是錯的? create.pl的

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"); 

來源:

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

回答

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"); 

或者像阿蒙指出的那樣,你可以使用正斜槓,而不是:

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

甚至更​​好:使用正斜槓。同樣適用,並且讀起來更容易。另外,將命令分成字符串列表('system $ executable,@ args')可能通常更可取。 – amon 2013-05-10 20:20:00

+0

我嘗試做類似這樣的事情: '使用CGI; 使用嚴格; 使用警告; print「Content-Type:text/html; charset = utf-8 \ n \ n」; (「C:\\ Perl \\ bin \\ perl C:\\ xampp \\ htdocs \\ xampp \\ vyber \\ bc \\ test \\ create.pl」);' create.pl source 'open(INFO,「> aaaaaaa.txt」); print INFO「voda」; close INFO;' 但它沒有創建任何文件 – 2013-05-10 21:54:38

+1

如果您使用的是64位Perl,那麼您的路徑是錯誤的。這很可能是''C:\\ Perl64 \\ bin \\ perl'。你的一個或兩個路徑必須是不正確的。 – 2013-05-10 22:23:14