Bernhard Peissl: pass-by-reference in Perl ???

Beitrag lesen

Hallo Calocybe

Ich habs mir das perlreftut ja durchgelesen, aber da stand irgendwie
immer nur was von der einen Richtung, nämlich einzelne Daten aus
einem Array/Hash auszulesen, aber nicht, dass man Referenzen auch
dazu benützen könnte, diese zu verändern, und erst recht nicht, dass
man sie auf stinknormale Skalare anwenden kann. Dumm wie ich nun mal
bin, hab ich mich damit gleich abgefunden :-(

Dereferenzieren fuer Skalarreferenzen mit voranstellen eines
weiteren $:
$$susi_ref = "susi";

Also übertragen:

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

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

Genaueres findest Du natuerlich in den perldocs, insbesondere perlre.

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 ;-)

sub schlag {
    my $x;
    while ($x = shift()) {

»»         $$x =~ s/\w/_mit_dem_blauen_auge/g;
»»     }

}

Na hui hui hui!!!! da seh ich ja was, das ich noch nie gesehen habe:
was bitte macht shift()? und wo belegst du $x mit einem Wert?

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?

liebe Grüsse,
Bernhard