Michael Schröpl: for oder foreach ?

Beitrag lesen

Hi Christoph,

#! D:/Perl/bin/perl.exe

wo ist "use strict", ey? ;-)

&auslesen;
&erstellen;

ähem ... old-style-Funktionsaufrufe?
(Das ist eher Perl4 als Perl5, denke ich - ich mag sie
jedenfalls nicht - um so weniger, als sie anders aus-
sehen als Funktionsaufrufe in jeder anderen mit be-kannten Sprache.)

Die Zeile
   foreach $zeile (@datei)
funktioniert auch in der Form
   for $zeile (@datei)

TIMTOWTDI

und jetzt bin ich verunsichert, was ich einsetzen
soll: "for" oder "foreach" ?

"The foreach keyword is actually a synonym for the for
 keyword, so you can use foreach for readability or for
 for brevity."

spielt die Reihenfolge, in der ich die einzelnen
Zeilen meines Perl-Scripts notierte, eine Rolle
(ich meine damit nicht, daß die shebang als erste
Zeile stehen muß) ?

Du kannst in der Tat Hauptprogramm und Funktionen
"mischen".

Ich mache das selbst auch.
Und zwar will ich bestimmte Dinge ganz oben haben
("use strict;" beispielsweise, aber auch
Konfigurations-Abschnitte von Skripten, eingebrannte
Pfadnamen, Debug-Flags etc.), damit die von jemandem,
der nicht Perl kann, problemlos geändert werden können.
Typischerweise endet dieser Teil mit einem Kommentar
"do noch change anything below this line".
Teilweise stehen dort auch einige globale Variablen,
die ich in den nachfolgenden Funktionen verwenden will,
auch wenn sie erst sehr viel tiefer dann wirklich einen
Wert bekommen. (Ich habe halt noch gelernt, daß Para-
meterübergabe CPU-Zeit kostet ...)

Als nächstes folgt dann die Definition meiner lokalen
Funktionen.
Allerdings mit newstyle-Parameterlistenbeschreibung,
so daß Perl bei späteren Aufrufen prüfen kann, ob ich
die richtige Anzahl Parameter übergeben habe etc.

Und als letztes dann der Rest des Hauptprogramms, mit
den entsprechenden Aufrufen.
Sortiert man das anders herum, dann gibt es Warnungen,
daß Perl nicht prüfen kann, ob die Funktionsaufrufe
passen (offenbar macht der Perl-Parser nur einen
einzigen Durchgang bei der Syntaxprüfung - tempo-
optimiert statt sicher ... Hackersprache, gnlpfts).

Viele Grüße
      Michael