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


in reply to Read a line with max length ?

Be careful with local $/ = \$maxlength;. That changes what the diamond operator thinks of as a line. If the input stream contains "foo\nbar\nbaz", then the line read will have as many "\n" as $maxlength will contain.

You may want to keep the default record seperator and limit length with something like this:

while (<FILEHANDLE>) { $_ = substr $_, 0, $maxlength if length > $maxlength; # ... }

Update: graff is right that this does not avoid problems with extra-long lines. Buffer overflow should not be a problem on most OS's, but forcing the machine into swap and OOM could be an attack.

After Compline,
Zaxo