Perl入門 ≫ LESSON22 システム関数

システム関数

Perlからシステム操作する関数が多数存在します。システムというのは、プログラムを実行しているコンピュータのシステム事のです。

が、これらの関数はシステムに対して色々影響を及ぼしてしまうので、特に必要ない場合、わざわざ使う必要のない場合はあまりつかわないほうがいいです。
そもそもサーバ上では動かないようになっていることが多いです。

実際の所、die関数以外自分はあまり使いません。
(自分のマシン内であれば好き勝手やって試してみて下さい)

●chdir:作業ディレクトリの変更

chdir ディレクトリ名

作業ディレクトリを変更します。

#カレントディレクトリオープン
opendir(DIR, ".") || die "Directory open error!";
while(my $v = readdir(DIR)) {
    print "$v\n";
}
closedir(DIR);

#ディレクトリ変更
chdir("testdir");
opendir(DIR2, ".") || die "Directory open error!";
while(my $v = readdir(DIR2)) {
    print "$v\n";
}
closedir(DIR2);


プログラムを実行したカレントディレクトリの中身一覧と、その直下にあるtestdirディレクトリの中身一覧を表示しまs7。

●alarm:アラームを鳴らす

alarm 秒数

指定した秒数後にアラームを鳴らします。

print "Alarm start\n";
alarm 5;
print "Alarm end\n";




●die:異常終了

die リスト

リストの内容を標準エラー出力に出力して、プロセスを終了します。 エラーの場合に使います。

#ディレクトリオープン
opendir(DIR, "testdir") || die "Directory open error!";
while(my $v = readdir(DIR)) {
    print "$v\n";
}
closedir(DIR);

Directory open error! at G:\test.pl line 6.

testdirディレクトリが存在しなかったりするとエラーになります。
何行目でエラーになったかも表示してくれます。

●exit:終了

exit コード

指定したコードで直ちにプロセスの実行を終了します。デフォルトは0。

exit;



●sleep:スリープ

sleep 秒数

指定した秒数後、プログラムをスリープ状態にします。秒数を省略すると、スリープ状態のままになります。 実際にスリープした秒数を返します。

print "Sleep start\n";
sleep 5;
print "Sleep end\n";

これを実行してみると、最初の出力のあと、5秒スリープしてから次の出力が実行されます。

●system:システムプログラムを実行する

system [プログラム] リスト

システムプログラムを実行します。
system関数は、成功すると0を、失敗するとそれ以外を返します。

my $k = system(dir);
print "$k";

システムの”dir”コマンド(ディレクトリ一覧表示)を実行します。


●`プログラム`:システムプログラムを実行する

`プログラム`

システムプログラムを実行して実行結果を返します。

my $k = `dir`;
print "$k";

上のsystem関数と似ていますが、system関数は実際にシステムに制御を渡して実行します。 `プログラム`の場合、実行した結果(上の例だとディレクトリ一覧)を取る事ができます。
*他にもシステム関数は多く存在しますが、とりあえずよく使うものだけ紹介しました。

ページのトップへ戻る