個人事業主の方必見!確定申告のお悩み解決

恐れ入ります。

一定時間後にプログラムを実行したいのですが、sleepですと、すべてのプログラムが停止してしまいます。
プログラムの一部を、一定時間後に実行するにはどうしたらよいのか苦戦しています。

$SIG{ALRM} = \&timeout;
eval {
alarm 5;
print qq!
再生中!;
alarm 0;
};
alarm 0;
sub timeout{
print qq!5秒経ちました!;
}

としてみましたが、うまくいきません。再生中を表示しながら、5秒後に5秒経ちましたと、
再生中を表示しながら表示したいのですが、どのようにしたら良いでしょうか。

よろしくお願いします。

A 回答 (1件)

何がどう上手くいかないんですかね?



use POSIX 'strftime';

$SIG{ALRM} = \&timeout;
eval {
alarm 5;
my $str_time = strftime( "%Y-%m-%d %H:%M:%S", localtime );
print "$str_time\n";
my $line = <STDIN>;
alarm 0;
};
sub timeout {
print "time-out\n";
my $str_time = strftime( "%Y-%m-%d %H:%M:%S", localtime );
print "$str_time\n";
exit 0;
}

---
$ perl -w foo.pl
2012-08-16 03:53:35
time-out
2012-08-16 03:53:40
    • good
    • 0
この回答へのお礼

ありがとうございます。大変参考になりました。

お礼日時:2014/09/27 13:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qcgi を定期的に自動実行

以前過去の質問で見たような気がするのですが、
思い当たるキーワードを打っても打っても出てこないので
申し訳ありませんが質問させていただきます。
cgi を一定の間隔で自動的に実行したいんです。
telnet接続したり、UNIXで操作しないと不可能でしょうか
Perl でやれればありがたいのですが。

Aベストアンサー

なんか回答がズレていると思うのは気のせい?^^;

えー、スクリプトを自動実行させるにはtelnetで入って
crontab -e すればいいわけですが、たいていのプロバイダでは
cronを許可していないと思います。
kiwiとかairnetは許可してますね。

あともうひとつの方法としては、時間がくると指定したプログラムを
実行してくれるオンラインソフト(URL参照)を使って、

"C:\Program Files\Internet Explorer\IEXPLORE.EXE" www.hoehoe.com/auau.cgi

みたいにする方法があります。この方法だと当然自分のマシンを
起動させておく必要がありますが。

参考URL:http://www.vector.co.jp/vpack/filearea/win/util/launch/index.html

Q複数ファイルの読み込みについて

perl初心者です。

あるディレクトリから拡張子がdataであるファイルを全て読み込みたいのですが、方法がわかりません。
cshで書くと
foreach arg (*.data)
コマンド $arg

のようになりますが、perlだと
foreach $arg (@arg){
コマンド $arg

となりますよね?
引数がリストなのでよくわかりません。
そもそもperlではできないのでしょうか?


それともう一点ですが、ファイルオープンするときに
foreachループの中で
open(FILE, "$arg");
とすることは可能ですか?
上の質問と組み合わせて全てのファイルを開いて作業を行いたいので。

説明が下手ですいません。補足しますのでよろしくお願いします。

Aベストアンサー

while(<*.data>)
{
## $_には、*.DATAなファイル名が格納されている。
open(F,"$_"); ##openする。
while(<F>)
{
##読み出された内容が$_に格納されている。
print $_; ##出力してみる。
}
}

というのが最短コーディングです。


人気Q&Aランキング