我想提示用户输入,在一段时间后,如果没有响应,脚本必须退出.我有这个代码
eval { local $SIG{ALRM} = sub { die "timeout getting the input \n" }; alarm 5; $answer = <STDIN>; alarm 0; chomp $answer; }; if ($@) { #die $@ if $@ ne "timeout getting the input\n"; $answer = 'A'; }
警报超时正在按预期工作,但我希望在每秒递减后再添加一个打印语句,类似于倒计时(例如10秒说“10 … 9 ..8 ..so)”
任何人都可以帮助如何将此功能与超时一起嵌入.
谢谢
解决方法
# disable output buffering $| = 1; my $answer; eval { my $count = 10; local $SIG{ALRM} = sub { # print counter and set alaram again if (--$count) { print "$count\n"; alarm 1 } # no more waiting else { die "timeout getting the input \n" } }; # alarm every second alarm 1; $answer = <STDIN>; alarm 0; chomp $answer; }; if ($@) { #die $@ if $@ ne "timeout getting the input\n"; $answer = 'A'; }