#!/usr/bin/env perl use strict; use warnings; open my $fh, '<', 'test_file.txt' or die 'Can not open file'; my %data; my $row_number = 1; my $grand_total = 0; while(<$fh>){ chomp $_; my ($key, $val) = split(/\|/, $_); $data{$key}->{'size'}++; $data{$key}->{'total'} += $val; $grand_total += $val; print "Row ($row_number) ". "/ Array Size [$data{$key}->{'size'}] key ($key) ". "/ Amount ($val) / Sub Total ($data{$key}->{'total'}) ". "/ Grand_Total = ($grand_total)\n"; ++$row_number; } foreach my $key ( sort { $a <=> $b } keys %data ){ print "the total is: (".$data{$key}->{'total'}.")\n"; } exit;