in reply to Re^2: I need outputting the results of a query in a formatted way to a scalar, so that I can email the results
in thread I need outputting the results of a query in a formatted way to a scalar, so that I can email the results

Consider separating the data extraction from the formatting so you can prove each part individually. Also, maybe sprintf is all you need.

my $result = get_query_results($dbh,$sql); print format_query_results($result); sub get_query_results { my ($dbh,$sql_query) = @_; my $sth = $dbh->prepare( $sql_query ); $sth->execute(); my $ar = $sth->fetchall_arrayref; return $ar; } sub format_query_results { my $ar = shift; my $fmt = "%-15s %20s %15s %15s %15s %15s %15s\n"; my $heading = sprintf $fmt, qw(SQL_ID min_last_load_time buffer_gets disk_reads executions sorts parse_calls ); my $report; for my $rec ( @$ar ){ $report .= $heading; $report .= sprintf $fmt, @$rec[0..6]; my $sql = SQL::Beautify->new( query => $rec->[7] ); $report .= "\n".$sql->beautify."\n"; } return $report; }
poj
  • Comment on Re^3: I need outputting the results of a query in a formatted way to a scalar, so that I can email the results
  • Download Code

Replies are listed 'Best First'.
Re^4: I need outputting the results of a query in a formatted way to a scalar, so that I can email the results
by gandolf989 (Scribe) on Sep 25, 2018 at 18:42 UTC
    Hi Poj, That was exactly what I needed. I am no longer getting page overflows. Thanks!