リモートサーバーからデータを取得するためにperlスクリプトを呼び出す必要があるPythonスクリプトがあります。perlスクリプトはperlのままである必要があります。これはサードパーティであり、オプションはありません。以前の開発者がコード全体に貼り付けていた、廃止された廃止されたものをすべて削除しようとしているので、commands.getstatusoutput呼び出しをサブプロセス呼び出しに置き換えたいのですが、どういうわけかそれを取得できないようです仕事...
これまで、スクリプトはcommands.getstatusoutput(string)を介して呼び出されていました。ここで、stringは、'/usr/bin/perl /path/to/my/perl/script.pl </のように、perlスクリプトへの完全なシステムコールです。 path / to / my /input'。
引数のリストを作成します(args = ['/usr/bin/perl'、'/path/to/my/perl/script.pl'、'<'、'/ path / to / my / input'])そしてそれをsubprocess.callに渡します:
args = ['/usr/bin/perl', '/path/to/my/perl/script.pl', '<', '/path/to/my/input']
strOut = subprocess.call(args)
print strOut
残念ながら、これはエラーで失敗します:
port absent at /path/to/my/perl/script.pl line 9.
perlスクリプトは次のとおりです。
#!/usr/bin/perl
use IO::Handle;
use strict;
use Socket;
my ($remote, $port, $iaddr, $paddr, $proto, $ligne);
$remote = shift || 'my.provider.com';
$port = shift || 9000;
if ($port =~ /\D/) { $port = getservbyname ($port, 'tcp'); }
die "port absent" unless $port;
ここで他の同様のスレッドを読んでいるにもかかわらず(pythonからperlスクリプトを呼び出す、pythonからperlスクリプトを呼び出す方法? 、PythonスクリプトでPerlスクリプトの結果を取得するにはどうすればよいですか?、Python getstatusoutputの置換が完全な出力を返さないなど)および他の場所、明らかな何かが欠けているような気がしますが、何がわからないのです。
何か案は?
ありがとう。