Perlで外部コマンドを実行する方法

Perlで外部コマンドを実行する方法にはいくつかあります。

最初の方法は、system関数を使う方法です。これを使うと、perlで子プロセスを起動できます。戻り値は子プロセスを実行したコマンドの終了ステータスとなります。書式は次のようになります。

system "コマンド";

例)

#!/usr/bin/perl
system "ls -1";
system "date > date.txt &";

perlプロセス内でコマンドを実行するにはexec関数を使います。書式は次のようになります。

exec "コマンド";

例)

#!/usr/bin/perl
exec "ls -1";
exec "date > date.txt &";

逆シングルクオートを利用する事で、コマンドの結果を変数へ代入することができます。リストコンテキストを使うと、改行区切りされた結果がリストへ代入されます。

#!/usr/bin/perl
my $result = `ls -1`;
print "-------------------\n";
print $result;

my @resultList = `ls -1`;
print "-------------------\n";
print @resultList;

パイプとopenを組み合わせる技も知っておくと便利です。コマンド実行の結果をパイプ経由で取得して、処理をする方法と、パイプを開いて、コマンドへ文字列を渡す方法を紹介しておきます。

#!/usr/bin/perl
open(FH , "ls -al | grep -v \"~\"|");
while (<FH>) {
  print ;
}
close FH;

print "------------------\n";

open FH, ‘|grep -v "abc"’ or die "Can’t open\n";
print FH ‘abc’, "\n";
print FH ‘xyz’, "\n";
print FH ‘stu’, "\n";
print FH ‘abcdefg’, "\n";
close FH;

モダンPerl入門 (CodeZine BOOKS), Perl逆引きクイックリファレンス―Perl5.8対応, PerlフレームワークCatalyst完全入門といった書籍が参考になります。Perl以外のプログラミング言語に興味がある場合は、関連書籍が参考になるでしょう。

—-
関連書籍

同じタグの記事: Perl
同じタグの記事: program
同じカテゴリの記事: Program
関連書籍: Perl
関連書籍: program