Thread Mit while durch file loopen und aktuelle line veraendern (27 answers)
Opened by Student87 at 2012-11-13 10:40

Linuxer
 2012-11-18 11:17
#163360 #163360
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
1) Es ist zwar eine Zeile mehr, aber die Variable wird an mehreren Stellen verwendet (im open und der Fehlermeldung). Es spart auch Tipparbeit, wenn der Dateipfad länger wird... Einen Pfad wie /var/log/apache2/access_log/20121112.log (oder noch längeres) muss man nicht wiederholt im Programmcode fest kodieren. Einmal in eine Variable gepackt und diese verwendet, spart das enorm Arbeit, wenn der Pfad sich mal ändern sollte.

2) LINE: ist ein sogenanntes Label; im Prinzip ist es hier eine benannte Sprungmarke. Ohne ein Label arbeitet next mit der nächst-höheren Schleife. Hier ist das Label nicht notwendig, weil wir nur eine Schleife haben. Wenn man 3 verschachtelte Schleifen hat, und aus der innersten Schleife dann den nächsten Durchlauf der äußersten Schleife anstossen will, muss man auf Labels zurückgreifen.
Bei einzelnen Schleifen kann es dem Verständnis dienen (next LINE; liest sich IMHO recht eindeutig, was als nächstes passieren soll (nämlich die nächste Zeile lesen).

3) @ARGV wird von Perl bereitgestellt; Doku dazu findest Du in perldoc perlvar:
perldoc perlvar
...

@ARGV

The array @ARGV contains the command-line arguments intended for the script. $#ARGV is generally the number of arguments minus one, because $ARGV[0] is the first argument, not the program's command name itself. See $0 for the command name.
...


Also stehen in @ARGV die Argumente, die dem Skript mitgegeben wurden.
Ich erwarte hier einfach, dass das erste Argument der Name der Datei ist, aus der gelesen werden soll.
Und weil bei $infile besser zu verstehen ist, was es sein könnte, als bei $ARGV[0] nehme ich das Argument aus @ARGV und packe es in diese Variable.

4) Der Punkt außerhalb der Quotes verbindet zwei Strings miteinander; siehe perldoc perlop; Alternativ könnte man auch my $outfile = "$infile.new" schreiben ...
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Mit while durch file loopen und aktuelle line veraendern