in reply to default value after timeout

alternatives are all welcomed

perldoc perlipc shows how to setup a timeout; you might try to modify it for your needs (untested).

sub getinput { my $default = shift; my $value; eval { local $SIG{ALRM} = sub { die "alarm clock restart" }; alarm 10; # your code here, read <STDIN> $value = ... alarm 0; }; if ($@ and $@ !~ /alarm clock restart/) { return $default } return $value; }

Replies are listed 'Best First'.
Re: Re: default value after timeout
by Limbic~Region (Chancellor) on Aug 29, 2002 at 22:41 UTC
    Thanks - I found a very similar piece of code in the Camel book 3rd edition, which I was able to modify.
    #!/usr/bin/perl -w use strict; my $value; my $timedout; sub timedout { $value = "default"; $timedout = 1; die; } eval { local $SIG{ALRM} = 'timedout'; alarm 10; print "Please enter the value - you have 10 seconds\n"; chomp ($value = <STDIN>); alarm 0; }; alarm 0; if ( $timedout ) { print "You timed out - setting value to $value\n"; } else { print "You entered $value within the 10 second time frame\n"; }
    I am new to Perl, but I would have thought this had come up more. I am still interested in other solutions, so keep them coming!