sub db_execute { my(@return,@a,$cursor); unless($VARS{connected}){db_connect();$VARS{connected}++;} undef @return; $cursor = $dbh->prepare($_[0]); $cursor->execute || db_error(); unless($_[1]){ while (@a = $cursor->fetchrow){push (@return,@a)} return (@return); } } #### my $SQL = "select a,b,c from table"; my @lines = db_execute($SQL); while( ($a,$b,$c) = @lines ){ .. }