my %text_for = map { chomp; split /\s*\|\s*/, $_, 2 } <$iplist>; #### while (<$iplist>) { chomp; my ($k,$v) = split /\s*\|\s*/, $_, 2; push @{ $text_for{$k} }, $v; }