in reply to Re: divide one file into multiple arrays
in thread divide one file into multiple arrays

Golf, anyone?

If you’re OK reading the whole input file into memory, the part function from List::MoreUtils can be used to populate both arrays at once. (This also incorportes Eily’s use of map to populate %bad_hash.)

#! perl use strict; use warnings; use List::MoreUtils qw( part ); my %bad_hash = map { $_ => 1 } qw( www.yahoo.com www.google.com www.comcast.com ); my ($good_log, $bad_log) = part { exists $bad_hash{ (split)[5] =~ s{-- +-*}{}r } } <DATA>; print "\nBad lines are:\n"; print for @$bad_log; print "\nGood lines are:\n"; print for @$good_log; __DATA__ X456 TV-yes DB-no 123.12.23.45 dealio3 www.google.com-------- FX-yes d +53 Y-03 X123 TV-yes DB-yes 34.154.43.21 dealio1 www.ask.com-------- FX-no d01 +Y-03 X412 TV-no DB-no 192.365.25.23 rayovac2 www.microsoft.com--- FX-yes d1 +3 Y-07

Hope that’s useful,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,