1

重複の可能性:
Perl のシステム関数の出力を変数に格納するにはどうすればよいですか?

Perl スクリプトでシェル コマンドを実行しようとしました。例は次のようになります。

system ("ls -al");

結果は Unix でうまく表示されます。

$stringUnix で結果を返す代わりに、Perl スクリプトで結果を返す方法はありますか?

結果を Unix に出力したくありません。

4

1 に答える 1

14

バックティックを使用します。

$string = `ls -al`;

「qx」区切り文字は、これと同義です。

$string = qx{ls -al};

これは perlop man page に文書化ています。

openまたは、 '|'を使用することもできます。そのようです:

open my $filehandle, "ls -al|" or die "Open failed!\n";
while(<$filehandle>) {do_something($_);}
close $filehandle;

この場合、コマンドの出力に接続されたパイプへのファイルハンドルを開いています (基本的に、出力をファイルとして扱います)。これは、コマンドに時間がかかる場合や、一度にメモリに保存したい出力よりも多くの出力が生成される場合に便利です。これは、Perl のオープン マニュアルに記載されています。

于 2012-09-05T03:44:18.987 に答える