Cheatah: Fehler in Prozedur oder Hile ich bin blind

Beitrag lesen

Hi,

erstmal danke fuer eure hilfe, aber leider blicke ich nicht mehr so
ganz durch. also...

sorry, wenn ich Dich verwirrt habe.

#!/path/to/perl -w
use strict;

was genau ist der grund fuer diesen syntax?

Sichere Programmierung, Fehlervermeidung von Anfang an.

for (0..scalar @lines - 1)

sorry aber was heisst/bedeutet scalar?

Ein Skalar ist sozusagen ein nulldimensionales Element - also ein String, eine Zahl usw. Im Gegensatz dazu gibt es die Liste (Arrays, Hashes etc.). Wenn Du ein Array mit dem Keyword "scalar" in den skalaren Kontext zwingst, wird die Zahl der Elemente zurückgegeben.

while ($_ ne '<!--SCRIPTENDE-->') {

nicht so einfach, wegen returns - funzte bei mir so nicht.

Dagegen hilft chomp; aber wegen Leerzeichen an Anfang und Ende halte ich hier eine RegExp schon für okay (obwohl natürlich rechenintensiver).

Wobei diese ganze $_-Zuweiserei vermutlich eher nachteilig ist:

inwiefern?

Könnte von anderen Dingen überschrieben werden.

for (0..scalar @lines - 1) {
  if ($lines[$_] =~ /.../) {

scriptstart?

Die Punkte waren als Platzhalter gedacht :-) Der Code ist ansonsten an Deinem orientiert, deswegen habe ich ihn nicht weiter ausgeführt.

Ich glaube, das ist Absicht - und damit ein wunderbarer Grund, kein for zu benutzen. Setze initial

  1. absicht: s.o.  und 2. was ist initial?

initial = anfangs, zu Beginn (englisch "init")

und benutze dann eine while-Schleife, in der _nur Du_ $f erhöhst.

wie meinst du das? _nur Du_

Kein "for" o.ä.

close (DATEI);

Die war schreibend geöffnet, oder? Dann solltest Du auch hier den Fehlercode mit 'or die' oder von mir aus ' &error' abfangen.

tue ich ja.

Nein, denn Du schreibst nicht

close (DATEI) or die "Kann Datei nicht schliessen: $!";

Auch beim Schließen kann es schief gehen, was aber nur bei Schreibzugriffen relevant ist.

ACK :-)

sch... schreibfaulen progammierer ;-) was heisst das?

ACKnowledge = Zustimmung (Gegenteil: NACK)

Das ist übrigens ein häufig verwendetes Steuerzeichen :-)

vielen dank bishierher und ich hoffe ich oute mich nicht zusehr als
perl-neuling ;-)

Waren wir doch alle mal.

Cheatah