Hallo !
Ich habe schon längere Zeit nicht mehr mit Perl auf MySQL zugegriffen, aber wenn ich mich nicht völlig täusche, liefert $sth->fetchrow_array) in der Tat ein Array zurück, und zwar je nach den im SQL-Select-Statement angegebenen Datenbankfeldern.
Ein direkter Zugriff auf die Arrayfelder mittels des Datenbankfeldnames, so wie du es versucht hast, ist IMHO mit DBI nicht möglich.
Ein Beispiel zur Verdeutlichung:
SQL-Statement: "SELECT vorname, nachname, strasse, ort FROM adressen"
Ausgabe:
while ( @namen = $sth->fetchrow_array ) {
print "Vorname: @namen[0]\n";
print "Nachname: @namen[1]\n";
print "Strasse: @namen[2]\n";
print "Ort: @namen[3]\n\n";
}
Bei SELECT * FROM adressen werden entsprechend _alle_ Felder des Datensatzes zurückgegeben. Generell ist es aber, wie Klaus auch schon sagte, besser, die DB-Feldnamen im SQL-Statement namentlich aufzuführen, sogar wenn du alle Felder des Datensatzes auslesen willst.
Gruß,
kerki