Aqua: Wann &foo(“bla”); und wann foo(“bla”);

Hallo!

Jedesmal wenn ich in Erfahrung bringen will,
wann man beim Subroutinen-Aufruf ein & Zeichen davor setzt
und wann nicht,  erfahre ich oft:

"Wenn Du ein Anfaenger bist,  schreibe kein & davor,
wenn Du Profi bist,  darfst du eins davor machen"

Hoffentlich gebt ihr mir nettere Antworten dazu,
wann soll ich das & davormachen?

Bei Referenzen brauche ich das & sowieso weil ich &foo("bla");
machen muss,  aber wenn ich keine Referenzen verwende, wann
brauche ich das & und wann nicht?

Und wann ist es absolut verboten ein & davor zu machen?

Danke!
Aqua

  1. Hallo Aqua,

    [... & die 20234092384024820342834029384. ...]

    perldoc perlsub

    Grüße,
     CK

    --
    Fatal! Ich kann kein Reserve-Offizier mehr sein!
  2. Jedesmal wenn ich in Erfahrung bringen will,
    wann man beim Subroutinen-Aufruf ein & Zeichen davor setzt
    und wann nicht,  erfahre ich oft:

    "Wenn Du ein Anfaenger bist,  schreibe kein & davor,
    wenn Du Profi bist,  darfst du eins davor machen"

    Christian und Ich hatten gerade (ist schon im Archiv) eine längere Diskussion darüber.

    Bei Referenzen brauche ich das & sowieso weil ich &foo("bla");

    Das ist falsch, da du ja so kein Referenz erzeugst, sondern eine Referenz aus dem Rückgabewert von dem Funktionisaufruf.

    Du meinst: &foo;

    machen muss,  aber wenn ich keine Referenzen verwende, wann
    brauche ich das & und wann nicht?

    Du brauchst das '&' nur, wenn du:

    a.) den Parameter @_ automatisch weiterleiten willst:

    sub sub1
    {
     &sub2; # hier kriegt sub2 alle Parameter von sub1 übergeben
    }

    b.) wenn du das Prototyping übergehen willst.
    Das wird genauer in dem Link den Christian dir gezeigt hat erklärt.

    Struppi.