Moin Moin !
Hallo Alexander,
Jetzt habe ich nochmals ein wenig mit dem Code herumgespielt. Wenn ich folgende Zeile eingebe:
print $CGI->param('test');
liebes Perl, bitte gib den Rückgabewert der Methode param des Objektes $CGI aus.
Funktioniert alles wie gewollt.
Wenn ich jedoch folgende Zeile eingebe:
print "Hallo, $CGI->param('test')";
liebes Perl, bitte gebe den String aus und ersetze alle Variablen die Du findest. $CGI ist ein Objekt, in diesem Fall eine "blessed reference" auf einen Hash. Also soll Perl "Hallo, ", dann eine Hash-Referenz, gecastet auf einen String, dann "->param('test')" ausgeben. Und eine Hash-Referenz, gecastet auf einen String, ist "HASH(" + hexadezimale Adresse der internen Struktur + ")". Bei "blessed references" wird auch noch der Klassenname und ein "=" vorangestellt.
Bekomme ich folgende Ausgabe auf dem Browser:
Hallo, CGI=HASH(0x1a6f038)->param('test')
Genau das hast Du ja von Perl verlangt.
Jetzt gehe ich davon aus, das ich den obige Code wie folgt schreiben muss, das es funktioniert:
print "Hallo,". $CGI->param('test');
liebes Perl, bitte schreibe den String "Hallo,", concatiniert mit dem Rückgabewert der Methode param des Objektes $CGI.
Habe ich jetzt alles richtig verstanden? Ja, ich weiß, eigentlich hätte ich ja gleich selbst drauf kommen können, aber irgendwie hat erst die Aussage das es gehen muss mich dazu bewogen mal ein paar Tests zu machen.
Vielleicht solltest Du Dir mal die Perl-Doku vornehmen.
Kann mir eigentlich jemand die Ausgabe der Zeile CGI=HASH(0x1a6f038)->param('test') erklären?
siehe oben.
Alexander
Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
Mein "Lieblings-Forums-Bug": http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2