use strict; use Data::Dumper; my @four; my @all; my $count = 0; while () { s/\s+$//; push @four , $_; $count++; if ( ($count % 4) == 0) { my %hash; @hash{'name','address','phone','fax'} = @four; push @all , \%hash; @four = (); } } print Dumper(\@all); __DATA__ name1 address1 phone1 fax1 name2 address2 phone2 fax2