foreach $line (@lines) { ($name, $value) = split(/=/, $line); chomp($name); chomp($value); if ($name eq "loop" and $value eq "start") { $loop_status = "start"; } if ($loop_status eq "start") { if ($name eq "loop_name") { $loop_name = $value; } elsif ($name eq "loop" and $value eq "end") { $loop_status = "end"; $template->param(eval "$loop_name" => \@loop); } elsif ($name eq "row" and $value eq "start") { my %row; } elsif ($name eq "row" and $value eq "end") { push (@loop, \%row); } else { if ($name ne "loop") { $row{eval "$name"} = $value; } } } if ($loop_status ne "start") { if ($name ne "loop" and $name ne "loop_name" and $name ne "row" and $name { $template->param($name, $value); } } } #### $VAR1 = [ { 'rel_date' => '04/060/09', 'importer' => 'Something', 'file_id' => '123', 'vendor' => 'Some', 'urgency' => '5' }, $VAR1->[0], $VAR1->[0], $VAR1->[0], $VAR1->[0] ];