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


in reply to Re^2: Shorten the headers of a file and remove empty lines using perl
in thread Shorten the headers of a file and remove empty lines using perl

foreach my $line ( <$input_fh> )

should be

while (my $line = <$input_fh> )

The first form is a glob, (but I don't know well enough to explain it to you).

The second line should work properly for reading your file.

Update: Yes Choroba is correct, it is not a glob - my mistake,

Replies are listed 'Best First'.
Re^4: Shorten the headers of a file and remove empty lines using perl
by choroba (Cardinal) on Jun 13, 2013 at 23:30 UTC
    It is not a glob. It is a readline in list context. If the file is large, it can eat lots of memory, and should therefor be avoided.
    لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
Re^4: Shorten the headers of a file and remove empty lines using perl
by Preceptor (Deacon) on Jun 14, 2013 at 20:29 UTC

    Indeed - the bit I posted initially will work, but it'll trigger reading the whole file into memory. Probably not a good idea with a 500MB file.

    Perl contexts are incredibly clever, but do lead to some interesting gotchas - use of a filehandle in a scalar or array context is one of them.