3

perlコードがこのようなものだと仮定すると...

open(STDOUT, ">$PName") || die "Can't redirect stdout";
$status = system("python Example.py $PName.txt");

(これはhttp://www.linuxquestions.org/questions/programming-9/perl-script-call-python-linux-551063/から取得されます)

文字列をperlスクリプトに渡すことができるようにするには、Pythonで何をする必要がありますか?

単に文字列を返す必要がありますか?またはコンソールに印刷しますか?または、他の何か?

4

3 に答える 3

3

コンソールに印刷して、Perlで使用することもできます。

my $from_py = `python foo.py bar`;
于 2012-06-11T13:40:41.900 に答える
1

このsystemコマンドは、Perlではコマンドの出力をキャプチャするのに役立ちません。バッククォートを使用してコマンドを実行し、Pythonスクリプトでstdoutに書き込む必要があります。

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

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

詳細については、以下のリンクされたソースを参照してください。

出典:Perlでの外部コマンドの実行

于 2012-06-11T13:40:59.987 に答える
1

最も簡単な方法は、次のようにバッククォート(``を使用することです。

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

同義のアプローチには、が含まれqx//ます。

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ドキュメントの「SafePipeOpens 」セクションで概説されているように、コマンドを引数に分割することでシェルをバイパスできます。

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

出力:

バックティック:
Pythonプログラム:Example.py
引数:pname-value.txt

パイプ:
Perlが取得:Pythonプログラム:Example.py
Perlが取得しました:引数:pname-value.txt
于 2012-06-11T14:01:02.787 に答える