Calocybe: pass-by-reference in Perl ???

Beitrag lesen

Hi ho!

Ich habs mir das perlreftut ja durchgelesen, aber da stand irgendwie

Oh, das kannte ich ja noch gar nicht. Hab immer nur perlref gelesen. *g*

Also übertragen:

int* susi = &strolchi; <=>  $susi = $strolchi;
*susi = 6              <=> $$susi = 6;

»»

... in beiden Fällen ist strolchi==6, habe ich das jetzt geschnallt??

Yepp.

Da hab ich doch glatt mal was gelesen, aber wart mal, hiess das nicht
perlre!f! ;-) perlre ist aber auch so ein Spezialgebiet von mir ;-)

Aeh.. ja, meinte ich. *g*  Aber perlre ist auch ne lustige Sache. ;-)

Vermutung: while($x=shift()) weist $x der reihe nach jeden Parameter
zu, der der Funktion übergeben wurde! Stimmts, oder hab ich Perl
immer noch nicht kapiert?

Ja. Genaugenommen entfernt shift() das erste Element eines Arrays und gibt es zurueck. Wenn man nicht sagt, *welches* Array gemeint ist, wird @_ bearbeitet. Wenn nichts mehr uebrig ist vom Array, ergibt das undef und das while wird abgebrochen.

Den Hinweis von Kai kannte ich auch noch nicht. Damit kann man das auch so schreiben:

sub schlag {
    for (@_) {
        s/\w/_mit_dem_blauen_auge/g;
    }
}

und dann aber keine Referenzen mehr uebergeben, sondern die Skalare direkt.

So long