上の任意のヘルプを表示します。
あなたは
$result = `echo exit | telnet 127.0.0.1 9443 2>&1`;
がI/O redirectionを参照してくださいSTDOUT
ストリームにSTDERR
ストリームをリダイレクトすることができます。
さまざまな形のopen
を使用してこれを行う方法が丸められています。 it in perlfaq8を参照してください。これにはさまざまなモジュールもあります。 Capture::Tinyはかなり簡単です。
use warnings 'all';
use strict;
use Capture::Tiny qw(capture);
my $cmd = 'echo exit | telnet 127.0.0.1 9443';
my ($stdout, $stderr) = capture {
system ($cmd);
};
print "STDOUT: $stdout";
print "STDERR: $stderr";
これは、モジュールがより多くの機能を持っている私のため
STDOUT: Trying 127.0.0.1...
STDERR: telnet: connect to address 127.0.0.1: Connection refused
を印刷します。ドキュメントから
キャプチャ::タイニーは関係なく、それはPerlのから、XSコードから、または外部プログラムから来ているかどうかの、STDOUTやSTDERRに送信されたほとんどすべてを捕獲するための簡単な、移植可能な方法を提供します。
それでも私はそれを試した空の文字列を表示します。 'which java'のような他のコマンドを試してみると、出力が正しく出力されますが、telnetコマンドでは表示されません。 –
@AhmedAbuzekryそれは変です。私はそれを試して、私はメッセージを返す。 – zdim
私は以前に試したことが分かりませんし、動作していません。 –