das ist doch das selbe, was Calocybe gesagt hat:
print("$key = $value\n") while (($key, $value) = each(%$cursor));
Richtig.
und das gibt leider gar nichts aus. Ich habe die Referenz von $cursor mit ref($cursor) abgefragt:
Benutze Data::Dumper, wie es Wolfgang vorgeschlagen hat, wenn Du wissen willst, was eine Variable alles enthaelt und von welchem Typ sie ist. (Aber Vorsicht, solche Listings koennen mitunter sehr lang werden.)
$cursor = $dblink -> prepare("select * from user");
print ref($cursor);und das gibt witzigerweise "DBI::st" aus.
D.h. $cursor ist nicht einfach nur eine Referenz, da steckt noch etwas mehr dahinter.
Es ist also eine Referenz, die in das DBI::st Package ge-blessed wurde. Oder weniger technisch: Es ist ein DBI::st Objekt. Trotzdem ist es nachwievor auch eine Hash-Referenz.
Ich habe auch versucht einfach mal mit print DBI::st auszugeben, das gibt auch nichts. In der DBI Doku habe ich auch nichts über DBI::st gefunden.
Also ich hab mal eben bei Active State nachgeschaut, und da findet sich unter <http://www.activestate.com/Products/ActivePerl/docs/site/lib/DBI.html#dbi database handle objects>:
Prepares a single statement for later execution by the database engine and returns a reference to a statement handle object.
The returned statement handle can be used to get attributes of the statement and invoke the execute method. See Statement Handle Methods [<http://www.activestate.com/Products/ActivePerl/docs/site/lib/DBI.html#statement handle methods>].
Note that prepare should never execute a statement, even if it is not a select statement, it only prepares it for execution.
Weiter oben bei "Notation and Conventions" steht
$sth Statement handle object
Was Du zurueck bekommst, ist also ein statement handle object und, wie ich bereits vermutet hatte, kannst/musst Du von diesem Objekt die execute-Methode aufrufen. Aber wieso liesst Du nicht einfach selber die Dokumentation, steht doch alles drin?
So long