Mailinglist Archive: opensuse-de (5248 mails)
| < Previous | Next > |
Re: Textdatei zeilenweise auslesen
- From: Matthias.Kleine@xxxxxxxxxxxx (Matthias Kleine)
- Date: Wed Mar 15 17:10:01 2000
- Message-id: <00031518195603.01004@orka>
Am Mit, 15 Mär 2000 schrieb Ralf Corsepius:
#!/usr/bin/perl
while(<>)
{
chomp ; print "<$_>\n";
}
... wobei die Datei hier Kommandozeilenargument sein muß.
Nein, das Skipt liest von STDIN und schreibt nach STDOUT
Der diamont-Operator benutzt @ARGV als Standardargument, wenn
Du STDIN meinst, solltest Du <STDIN> statt <> schreiben. Mit
Diamont-Operator funktioniert die Konstruktion skript.pl dateiname, mit
<STDIN> aber nicht, dann mußt Du umleiten. Das wiederum funktioniert
nicht mehr, wenn Du mehrere Dateien einlesen willst:
skript.pl datei1 datei2 geht, während
skript.pl <datei1 datei2 nicht geht.
Da Perl \n am Ende einer Zeile in $_ beibehält, muß \n erst entfernt
werden, um anschießend mit print "\n" wieder eingefügt zu werden.
Versteh ich nicht. Warum erst abschneiden und später wieder drankleben?
Laß es doch gleich dran. Die Textdatei soll doch eine bleiben. In
Einzelfällen kann es natürlich dennoch sinnvoll sein.
Zum Abschneiden von \n am Zeilenende kann "chomp" verwendet werden.
Ach nee.
Ein sehr ähnliches Beispiel ist den Perl-Manpages zu finden (man
perlfunc, Stichwort chomp):
while (<>) {
chomp; # avoid \n on last field
@array = split(/:/);
# ...
}
Ja, hier willst Du aber auch die einzelnen Felder zwischen ":"
extrahieren, z.B. bei der Bearbeitung von Konfigdateien... Das ist eine
andere Aufgabenstellung.
Matthias
--
SelfLinux http://www.selflinux.de Matthias.Kleine@xxxxxxxxxxxx
news: Formatreferenz 0.2 ist raus - http://www.selflinux.de/doku
---------------------------------------------------------------------
To unsubscribe, e-mail: suse-linux-unsubscribe@xxxxxxxx
For additional commands, e-mail: suse-linux-help@xxxxxxxx
| < Previous | Next > |