in reply to monitorlogs.pl

Bzzzt! What's with the

  open FILE, $lengthfile || die "Couldn't open lengthfile";

If you're running this script against two or more logfiles, which one blew up? Why did it blow up? We all know that should be written as

  open FILE, $lengthfile || die "Couldn't open lengthfile $lengthfile for input: $!\n";

A die expression is a terrible thing to waste.

But that's still no good. If the open fails, nothing is going to be printed out in any event, because precedence rules imply that the statement should be parsed as:

  open( FILE, ($lengthfile || die) );

Which means unless the scalar $lengthfile is undefined false (thanks Juerd!), the die is never going to be executed. And then the error message would be really puzzling. So it should be written as:

  open FILE, $lengthfile or die "Couldn't open lengthfile $lengthfile for input: $!\n";

There's also a bit of an indentation flaw at the end of the code. At first I thought you were systematically rewriting the lengthfile, until I noticed that the code was actually within the if block.

g r i n d e r
print@_{sort keys %_},$/if%_=split//,'= & *a?b:e\f/h^h!j+n,o@o;r$s-t%t#u';

Replies are listed 'Best First'.
Re: Re: monitorlogs.pl
by Juerd (Abbot) on Feb 09, 2002 at 21:51 UTC

    Which means unless the scalar $lengthfile is undefined,

    s/undefined/false/

    False are: undef, 0, "0", ""

    2;0 juerd@ouranos:~$ perl -e'undef christmas' Segmentation fault 2;139 juerd@ouranos:~$