2012-06-11 19 views

回答

1

system命令是沒有用Perl中用於捕獲命令的輸出。您應該使用反引號來執行命令並將其寫入Python腳本中的stdout。

#-- returns one string 
$result = `command arg1 arg2`; 

#-- returns a list of strings 
@result = `command arg2 arg2`; 

請參閱下面的鏈接源以獲取更多信息。

來源:executing external commands in Perl

3

你可以只打印到控制檯,並在Perl使用:

my $from_py = `python foo.py bar`; 
1

最簡單的方法是在

my $output = `python Example.py $PName.txt`; 
print "Backticks:\n", $output; 

同義方法涉及qx//使用backticks (``)作爲。

my $output = qx/python Example.py $PName.txt/; 
print "Backticks:\n", $output; 

要讀取每一行,請從Python子流程中打開管道。

print "Pipe:\n"; 
open my $fh, "python Example.py $PName.txt |"; 
while (<$fh>) { 
    print "Perl got: ", $_; 
} 
close $fh or warn "$0: close: $!"; 

正如perlipc文檔的「Safe Pipe Opens」 section概述,您可以通過拆分命令進入參數繞過外殼。

open my $fh, "-|", "python", "Example.py", "$PName.txt"; 

輸出:

Backticks: 
Python program: Example.py 
Argument:  pname-value.txt 

Pipe: 
Perl got: Python program: Example.py 
Perl got: Argument:  pname-value.txt
相關問題