$tmpl->param('loop' => db_get_loop()); sub db_get_loop { my ($dbh, $sql, $sth, @loop_info, $limit, $last_update, $city, $zipcode, $name, $low, $high, $date, $forecast, $forecast_description); $dbh = db_connect(); $sql = qq{SELECT last_update,city,zipcode,name,low,high, date,forecast,forecast_description FROM $TABLE ORDER BY last_update DESC, date LIMIT $limit}; $sth = $dbh->prepare($sql); $sth->execute(); $sth->bind_columns(\($last_update, $city, $zipcode, $name, $low, $high, $date, $forecast, $forecast_description)); while ($sth->fetchrow_arrayref()) { my (%loop); # Set TMPL_VARs for each iteration # in the loop $loop{'last_update'} = $last_update; $loop{'city'} = $city; $loop{'zipcode'} = $zipcode; $loop{'name'} = $name; $loop{'low'} = $low; $loop{'high'} = $high; $loop{'date'} = $date; $loop{'forecast'} = sprintf('%02d', $forecast); $loop{'forecast_description'} = $forecast_description; # Push this row onto loop push @loop_info, \%loop; } $sth->finish(); $dbh->disconnect(); return \@loop_info; }