in reply to Adding the duplicate data using arrays

This should work as expected. I used hash of hashes, as it looks simpler for me:
#! /usr/bin/perl use strict; use warnings; use Data::Dumper; my %HoH; while (<DATA>) { chomp $_; #print "<$_>\n"; my ($lev1, $lev2, $amount) = (split /\s+/, $_); #print "<$lev1>, <$lev2>, <$amount>, \n"; if (exists $HoH{$lev1}{$lev2}) { $HoH{$lev1}{$lev2} = $HoH{$lev1}{$lev2} + $amount; } else { $HoH{$lev1}{$lev2} = $amount; } } #print Dumper(\%HoH); while (my ($lev1, $inter) = each %HoH) { while (my ($lev2, $amount) = each %$inter) { printf ("%-10s%-10s%-5d\n", $lev1,$lev2,$amount); } } __DATA__ Apple Grape 100 Ginger Fry 200 Apple Grape 80 Ginger Banana 800 Ginger Fry 150 Ginger Banana 45
prints on my system:
Ginger Fry 350 Ginger Banana 845 Apple Grape 180
maybe you want to change formatting.