On 1/11/07, hOURS <[EMAIL PROTECTED]> wrote:
[snip]
Some modifications I made: I changed the names of the programs being
tested to fit what I had. I reduced the alarm time from one hour down to a
few seconds. I included statements to print out error messages. (The
original if and else blocks just had comments.) And lastly, for my test, since
I'll be checking a large number of programs for infinite loops, I encased this
code in a for loop. As you can see below, it executes the code 4 times,
testing the programs, infinite1.pl, infinite2.pl, infinite3.pl, and
infinite4.pl. Those are all very simple programs. 1, 2, and 4 are identical:
$x = 3 + 4;
print $x;
Running them gives the expected 7 on the screen. For infinite3.pl I
encased that in an endless loop:
while (1) {
$x = 3 + 4;
print $x;
}
Running this gives the expected never-ending stream of 7's.
Here's the finished code for error checking:
for($number = 1; $number < 5; $number +=1) {
$ProgramName = "infinite" . $number . ".pl";
eval {
local $SIG{ALRM} = sub { die "$ProgramName timed out\n" };
alarm 9;
require $ProgramName;
alarm 0;
};
if($@) {
if($@ =~ /timed out/) {
print "timeout\n"; # timeout
} else {print "some other error\n"; # some other error
}
}
}
So when I run this code and check those four little programs for errors
I get the following:
some other error
some other error
some other error
some other error
I don't know why I get 4 errors and not one, and why they're of the
wrong type. Any help would be appreciated.
Thank you,
Fred Kittelmann
Fred,
My best guess is that require is failing. See perldoc require for all
the reasons that might happen, but the two most likely culprits are
that your "modules" aren't in @INC or that they don't return a true
value as their final statement. Try adding
1;
to each of them as the last line of the file (again, read the require perldoc).
Also add some more debugging code.
require $ProgramName or die "$!\n";
would be a good start. Then you can examine $@ to see why the eval failed.
HTH,
-- jay
--------------------------------------------------
This email and attachment(s): [ ] blogable; [ x ] ask first; [ ]
private and confidential
daggerquill [at] gmail [dot] com
http://www.tuaw.com http://www.downloadsquad.com http://www.engatiki.org
values of β will give rise to dom!