1 2 3 4 5 6 7 8 9 10 11 12 13 14
&begruessen("Fred"); &begruessen("Barney"); &begruessen("BamBam"); &begruessen("Dino"); sub begruessen{ state @buffer_names; # Hier steht eigentlich noch mehr, hat aber mit meinem Problem nichts zu tun else{ foreach my $val(@buffer_names){ print "$val "; } } }
QuoteFred Barney
Fred Barney BamBam
Fred Barney BamBam Dino
QuoteFred
Fred
Fred
QuoteHallo BamBam! Die folgenden Personen waren vor dir hier: Fred Barney/quote]
Das ist der gesamt Code
Code (perl): (dl )1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21sub begruessen{ state $person_number = 0; state @names; state @buffer_names; foreach my $val(@_){ push(@names, $val); push(@buffer_names, $val); } if($person_number== 0){ print "Hallo $names[$person_number]! Du bist der erste hier!"; }else{ pop(@buffer_names); print "Hallo $names[$person_number]! Die folgenden Personen waren vor dir hier: "; foreach my $val(@buffer_names){ print "$val "; } } print "\n"; $person_number++; }
1
2
3
4
5
6
7
use strict;
use warnings;
my @array = qw( Ernie Bert Fred Barney );
my $letzter = $array[-1];
print "Letzter: $letzter\n";
2016-05-19T20:18:41 Raubtier
1. Das Buch rät zum Aufruf einer sub mit dem &-Zeichen? Das solltest du dir nicht angewöhnen. Lass es einfach weg. Sieht auch schöner aus
2016-05-19T20:18:41 Raubtier(und überschreibt keine Prototypen).
2016-05-19T20:18:41 Raubtier2. state: state-Variable können sinnvoll sein, aber setze sie mit Bedacht ein (also: selten!). Wenn du viele state-Variablen hast, ist sehr wahrscheinlich eine Klasse besser geeignet oder das ganze sollte irgendwie umgeschrieben werden.
Quote"…Die eigentliche Regel, nach der Sie vorgehen sollten, lautet also: Solange Sie nicht die Namen aller in Perl eingebauten Funktionen kennen, sollten Sie das &-Zeichen beim Aufruf Ihrer eigenen Funktionen immer benutzen (also ungefähr bei Ihren ersten hundert Programmen)…"
Guest Josef_MucQuote"Solange Sie nicht die Namen aller in Perl eingebauten Funktionen kennen, sollten Sie das &-Zeichen beim Aufruf Ihrer eigenen Funktionen immer benutzen (also ungefähr bei Ihren ersten hundert Programmen)…"
2016-05-20T12:14:06 Linuxer
Ich vermute mal, dass der zitierte Teil noch aus älteren Versionen des Buches stammt.
Der allgemeine Tenor ist - wie Du ja schon erfahren hast - das & vor Funktionen wegzulassen, außer man braucht es wirklich.
2016-05-20T13:21:15 LinuxerEs mag die aktuelle Version sein, aber die stammt trotzdem aus dem Jahre 2011 und behandelt Perl Version 5.14.
Aktuell haben wir 2016 und Perl Version 5.24. Das meinte ich mit "etwas alt".
2016-05-20T13:21:15 LinuxerDer allgemeine Tenor in der Community ist aber aktuell, dass man das so nicht tun sollte. Das kann aber ein Buch von 2011 nicht abdecken. Vielleicht wird das mal in einer neuen Auflage überarbeitet.