in reply to input record separator

From the docs for $/:
Remember: the value of $/ is a string, not a regex.
Your .* are regular expression syntax, but they are treated as a literal dot followed by a literal asterisk when assigned to the input record separator special variable.

If you want to avoid slurping your entire file into memory at once, you could operate on 3 lines at a time by creating a 3-line buffer:

use warnings; use strict; my @lines; while (<>) { push @lines, $_; if ($. % 3 == 0) { # do something with @lines; @lines = (); } }

Replies are listed 'Best First'.
Re^2: input record separator
by ikegami (Patriarch) on Jun 01, 2010 at 03:29 UTC
    my @lines; while (<>) { push @lines, $_; next if $. % 3; ... @lines = (); } die if @lines;
    can also be written as
    while (!eof()) { my @lines; defined( $lines[@lines] = <> ) or die for 1..3; ... }