Thread Debugging Hilfe bei Can't use string ("1") as a subroutine ref while "strict refs" in use (8 answers)
Opened by bianca at 2020-12-16 11:25

bianca
 2020-12-20 10:32
#193015 #193015
User since
2009-09-13
6975 Artikel
BenutzerIn

user image
Sehr gut geschrieben, flüssig lesbar. Ich arbeite schon lange mit Perl, habe aber nie eine große Tiefe erreicht. Aus diesem Immernoch-Anfängerin-Hintergrund folgendes Feedback von mir:

  • Im ganzen Text ist $classname nicht erklärt. Was ist das? Ist das der <Magie ein> Schalter?
  • Unter 5. steht im letzten Satz die Rückgabe mit "return". Wie sähe das aus und wofür bräuchte man das? Man hat doch die Möglichkeit, unendlich viele Attribute zu definieren.
  • Zu 8.: definiere ich die Wattzahl mit 0 macht die Magie daraus auch 40 als hätte man nichts angegeben. Ist vielleicht nicht in jedem Fall erwünscht, denn der Parameter fehlt ja nicht. Ein Hinweis darauf wäre m. E. sinnvoll.
  • Zur Vererbung: beeindruckende Möglichkeiten. Wenn man nun aber eine Methode versehentlich neu definiert kommt keine Warnung. Anders als das bei sub's der Fall ist. Kann man sich selbst dafür eine Sicherheit einbauen?
  • Ergänzungsvorschlag als Frage: gibt es immer nur ein $self oder kann man sich in komplexen Fällen auch mehrere definieren?
  • Wenn ich eine übergreifende Variable %env hereingeben will, ist das dann so korrekt (funktionieren tut es, was aber ja nicht immer best practice ist)?
    Code (perl): (dl )
    1
    2
    3
    4
    5
    6
    7
    
            sub zeigeWattzahl {
                    my $self = shift;
                    my $test = shift;
                    print "'" . $self->{name} . "' hat eine Birne mit ";
                    print $self->{wattzahl} . " Watt.\n";
                    say $test->{hans};
            }

    und dann $lamp->zeigeWattzahl(\%env);


Auf jeden Fall werde ich deinen Text auf meinen "Spickzettel" setzen und die nächste größere sub wird stattdessen ein package. Ich hatte in Tutorial für Module u. a. schon mal einen Anlauf dazu genommen aber bin wieder ab gekommen.

Danke für deine Arbeit!
10 print "Hallo"
20 goto 10

View full thread Debugging Hilfe bei Can't use string ("1") as a subroutine ref while "strict refs" in use