Gary Stainburn wrote:
> Hi folks,
>
> I've got the following code which works, but generates the error
> message following it. I've tried varying the code to eliminate the
> error but I only manage to get either the working code with error or
> non-working code without error.
>
> (Line 95 is the while line)
>
> print "checking file $fname...";
> open DAT,"<$fname" ||die "cannot open $fname: $!\n";
> my $found=0;
> while ((my $line=<DAT>) && (! $found)) {
> print "line=$line" if ($DEBUG > 0);
> $found=1 if $line=~/$localpart:/;
> }
> close DAT;
>
> [EMAIL PROTECTED] input]# tidy-mailq|gvim -
> Value of <HANDLE> construct can be "0"; test with defined() at
> /root/bin/tidy-mailq line 95.
> Vim: Reading from stdin...
> [EMAIL PROTECTED] input]#
>From perldoc perldiag:
Value of %s can be ""0""; test with defined()
(W misc) In a conditional expression, you used <HANDLE>, <*>
(glob), "each()", or "readdir()" as a boolean value. Each of these
constructs can return a value of "0"; that would make the condi-
tional expression false, which is probably not what you intended.
When using these constructs in conditional expressions, test their
values with the "defined" operator.
changing:
while ((my $line=<DAT>) && (! $found)) {
to
while (defined(my $line=<DAT>) && (! $found)) {
should make the warning go away.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>