#!/usr/bin/perl -w use strict; use Data::Dumper::Simple; my %first_two; while () { chomp; my ($key, $remainder) = $_ =~ /([a-z]+\|[a-z]+)\|([a-z]+)/; if (exists $first_two{$key}) { $first_two{$key} .= ",$remainder"; } else { $first_two{$key} = $_; } } print Dumper(%first_two); __DATA__ aaa|bbb|ccc ddd|eee|fff ddd|eee|xxxxx hhh|iiii|jjjjjj