my %hash; while ( ) { chomp; my @elts = split /\|_\|/, $_; $hash{$elts[0]}->{$elts[1]} = $elts[2]; } print Dumper \%hash; __DATA__ 200326951|_|rel_Access1|_|200315482|_| 200326951|_|rel_Access1|_|200315786|_| 200326951|_|rel_Access2|_|200315482|_| 200326951|_|rel_Access2|_|200315786|_|