in reply to Re^2: Last Line Read? (Any way to use IO::Handle methods on a "First-Class" Filehandle?)
in thread Last Line Read? (Any way to use IO::Handle methods on a "First-Class" Filehandle?)

Always always always use warnings; teach your fingers to type -wle, not -le. You are doing (print(\$fh))->input_line_number there, not print((\$fh)->input_line_number).
  • Comment on Re^3: Last Line Read? (Any way to use IO::Handle methods on a "First-Class" Filehandle?)

Replies are listed 'Best First'.
Re^4: Last Line Read? (Any way to use IO::Handle methods on a "First-Class" Filehandle?)
by naikonta (Curate) on Jun 08, 2007 at 08:42 UTC
    OK, how about this?
    $ cat /tmp/io.pl #!/usr/bin/perl use strict; use warnings; use IO::Handle; my $filename = shift || $0; my $fh = IO::Handle->new; open $fh, $filename or die "failed on $filename: $!\n"; print((\$fh)->input_line_number, "\n") while <$fh>; #1 #print $fh->input_line_number, "\n" while <$fh>; #2 $ perl /tmp/io.pl Can't call method "input_line_number" on unblessed reference at /tmp/i +o.pl line 10, <GEN0> line 1.
    The #2 prints the line numbers correctly. Did I miss something? Please shed some light.

    Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!

      Did I miss something?
      Just that I was trying to answer the parenthetical question in the title.
      $ perl - foo use strict; use warnings; use IO::Handle; my $filename = shift || $0; my $fh = do {local *FH}; open $fh, $filename or die "failed on $filename: $!\n"; print((\$fh)->input_line_number, "\n") while <$fh>; #1 #print $fh->input_line_number, "\n" while <$fh>; #2 __END__ Name "main::FH" used only once: possible typo at - line 6. 1 2 3 4 5 6 7 8 9 10