I am trying to write something which opens this file called abstract.sql: select city, date from weather where temp_lo < ?
and have it $sth->execute(@ARGV) but I am able to get DBI to force an instructive error message when I forget to supply command-line arguments. Instead I get Database handle destroyed without explicit disconnect, <A> line 1. Here is my program: use DBI; use strict; open A, 'abstract.sql' or die 'cannot open abstract.sql'; my $sql = join '', <A>; my $connect = 'dbi:Pg:dbname=mydb'; my $dbh = DBI->connect($connect,'postgres','take_a_guess_pal', { RaiseError => 1, PrintError => 1 } ); my $sth = $dbh->prepare($sql); $sth->execute(@ARGV); ### SHOULD THROW ERROR WHEN NO ARGS, YET ### QUERY HAS PLACEHOLDER VALUES?? HOW TO FIX? warn "ROWS ", $sth->rows; use Data::Dumper; open T, '>testexec.out' or die 'cannot create output file'; while (my $rec = $sth->fetchrow_hashref) { print Dumper($rec); }