こんな感じでしょうか。繰り返したいときには、SIGALRM のハンドラの中ででも alarm を呼び出しなおしましょう。割り込みたいのではなくて普通に待つだけなら sleep のほうが簡単です。ミリ秒単位で待ちたければ select を使いましょう。
$SIG{ALRM} = \&func; my $input = ""; eval { alarm 5; $input = <STDIN>; }; print $input; sub func { print "time out\n"; die; }
僕が知る限りでは、少なくとも1冊は存在しています。サークル名は失念しましたが、発売前のコミケでスタジオOXファンのサークルさんが出していました。結構美麗な絵でしたね。他は分かりません・・・