http://www.perlmonks.org?node_id=1016428


in reply to Why is the error thrown from close(FH) when the error is the missing <> on while(FH)?

Tip #6 from the Basic debugging checklist: B::Deparse can shed some light:

while (1) { $inline = $_; if (isOneOf($inline, @contexts)) { next; } else { print $_; } } close KNOWN_HOSTS;
  • Comment on Re: Why is the error thrown from close(FH) when the error is the missing <> on while(FH)?
  • Select or Download Code

Replies are listed 'Best First'.
Re^2: Why is the error thrown from close(FH) when the error is the missing <> on while(FH)?
by techgrrl (Sexton) on Feb 01, 2013 at 03:15 UTC

    Thanks, but do bear in mind, I already know the error, and I fixed it.

    This question has nothing to do with the syntax error, it is about trying to understand a diagnostic message, in order to gain wisdom.

    I ran deparse, and it printed my code prepended with the word LINE: and followed it with a diagnostic saying the syntax was OK.

    $ perl -MO=Deparse -p strip_keys.pl 
    
    LINE: while (defined($_ = <ARGV>)) { use warnings; use strict 'refs'; our($opt_h, $opt_k, $opt_u); my($inline, $device, $config, $file, $context, @contexts); use Getopt::Long; &help unless GetOptions 'h', \$opt_h, 'u:s', \$opt_u, 'k:s', \$opt +_k, 'device:s', \$device; &help if $opt_h; etc. continue { print $_; }
    strip_keys.pl syntax OK