in reply to Re: how to reg-exp match across multiple lines?
in thread how to reg-exp match across multiple lines?

Avoid join "", <FH>; It has to separate the file into records first, build a list from them, only to then go on to glue that back together into a string. The universally applicable approach is what japhy already posted: { local $/ = undef; $file = <FH> } This temporarily disables the input record separator, so that a single read will gobble the entire file. Another approach which I like even better as it works less "noisily", however is not universally applicable: sysread FH, $file, -s $filename; This only works when you know the filename and have the filehandle positioned at the start of the file, but is the ideal approach when these prerequisites are fulfilled.

Makeshifts last the longest.

Replies are listed 'Best First'.
Re: how to reg-exp match across multiple lines?
by Abigail-II (Bishop) on Jul 09, 2002 at 09:24 UTC
    -s can take a filehandle as argument as well.
    open my $fh => "/etc/motd"; print -s $fh, "\n"; __END__ 13 $ wc -l /etc/motd 13

    Abigail