#!/usr/bin/perl use strict; use warnings; use Data::Dumper; $Data::Dumper::Sortkeys = 1; $Data::Dumper::Terse = 1; my $hash = {}; foreach my $line ( ) { chomp $line; my ( $jira, $program, $rev, $reviewer, $desc ) = split /:/, $line; my $data = { JIRA => $jira, Program => $program, rev => $rev, Reviewer => $reviewer, Description => $desc, }; push @{ $hash->{ $program }}, $data; } print 'hash = ' . Dumper( $hash ); __DATA__ COM-6789:Testing:r876391:Balise Mat:Audited COM-6789:Testing:r698392:Chan Joe:SO hwat COM-6789:Testing:r327896:Chan Joe:Paid the Due COM-1234:Development:r345676:John Wick:General fix COM-1234:Development:r909276:None:Updating Received