こんな感じでしょうか。繰り返したいときには、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ファンのサークルさんが出していました。結構美麗な絵でしたね。他は分かりません・・・