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); } } }