Hi Monks the code below works perfectly use strict;
my $errorName="alarm\n";
my $time=5;
eval {
local $SIG{ALRM} = sub { die "$errorName" };
alarm $time;
sleep(10);
};
my $error= $@;
Off($error,$errorName);
sub Off{
my $error=$_[0];
my $errorName=$_[1];
if( $error && $error eq "$errorName")
{
warn "Timed out!!!\n";
exit ;
}
else
{
alarm 0;
print " you can continue";
}
}
But when I make it to subroutines as this use strict;
my $errorName="alarm\n";
my $time=5;
eval {
On($time,$errorName);
#dostuff();
sleep(10);
};
my $error= $@;
print "error ".$error."error \n";
Off($error,$errorName);
sub On
{
my $time=$_[0];
my $errorName=$_[1];
local $SIG{ALRM} = sub { die "$errorName" };
alarm $time;
}
sub Off
{
my $error=$_[0];
my $errorName=$_[1];
if( $error && $error eq "$errorName")
{
warn "Timed out!!!\n";
exit ;
}
else
{
alarm 0;
print " you can continue";
}
}
It does not work as expected instead of throwing the warning message it throws "Terminating on signal SIGALRM(14)" Need your help Monks.Thank you in advance
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|