#!/usr/bin/perl -w use strict; use Data::Dumper; my %message; while (defined (my $line = )) { chomp $line; my ($field,$value) = $line =~ /^<([A-Z]+)>\s*(.*)/; $message{$field} = $value; # assumes message is last item in file and doesn't # start on same line as MESSAGE key if ('MESSAGE' eq $field) { $message{$field} = do { local $/; }; } } print Dumper \%message; __DATA__ Sender Name To list User Name Text text text tex