Perl スクリプトでシェル コマンドを実行しようとしました。例は次のようになります。
system ("ls -al");
結果は Unix でうまく表示されます。
$string
Unix で結果を返す代わりに、Perl スクリプトで結果を返す方法はありますか?
結果を Unix に出力したくありません。
Perl スクリプトでシェル コマンドを実行しようとしました。例は次のようになります。
system ("ls -al");
結果は Unix でうまく表示されます。
$string
Unix で結果を返す代わりに、Perl スクリプトで結果を返す方法はありますか?
結果を Unix に出力したくありません。
バックティックを使用します。
$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 のオープン マニュアルに記載されています。