#!/usr/bin/perl use strict; use warnings; my $file = $ARGV[0] || 'input.txt'; open (INPUT, '<', $file) or die "Unable to open $file for reading : $!"; my %data; while ( ) { chomp; my @info = split /\|\|/; push @{$data{$info[3]}}, $info[1] if ! $data{$info[3]} || ! grep /^$info[1]$/ , @{$data{$info[3]}}; } for my $id ( keys %data ) { print "$id : " , scalar @{$data{$id}}, "\n"; }