selectrow_* macht (ebenso wie bei do) hinter den Kulissen sowieso ein prepare/execute, von daher kann man das recht gut verwenden, vor allem, weil es teilweise den Code besser lesbar macht.
Ich selbst kapsle allerdings die Abfrage lieber in eine eigene Sub (z.B. mit Namen fireSelect), in der ich dann prepare + fehlerabfrage, execute + ev. Parameter + fehlerabfrage, und das statement-handle zurückgeben.
und vielleicht noch eine weitere sub namens fireSelect_getOneRow, die dann die fireSelect ausfuehrt, einmal $sth->fetchrow_hashref oder so ausführt und den Hash zurückgibt.
Sowas hat den Vorteil, dass man bei Bedarf zentral ein die Selects mitloggen und gegebenenfalls einfach profilen kann
sub fireSelect {
my( $dbh, $sql, @params ) = @_;
my $sth = $dbh->prepare( $sql )
or .... Fehlerabfrage;
$sth->execute( @params )
or ... Fehlerabfrage
return $sth;
}
oder so aehnlich