#!/usr/local/bin/perl5.6.0 -w use strict; use Data::Dumper; my @records; while ( my $entry = ) { my %rec = map { /(\S+)\s*=\s*([^\n\r]+)$/ } split( /,/, $entry ); push( @records, \%rec ); } print Dumper( \@records ); __DATA__ Field1= a value,Field2= another value, Field3= yet another value Field1= a value,Field2= another value, Field3= yet another value Field1= a value,Field2= another value, Field3= yet another value