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