perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5310
davon online: 1
weitere User: 21
Click for quality!




10.09.2010 / 05:22

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragWie kann ich eine Datei mit Leerzeilen einlesen?
Seitenanfang
Hallo zusammen,

wenn ich mit

while (my $tb = <CONFIGFILE>){...} 
eine Datei einlese, wird nur bis zur ersten leeren Zeile eingelesen. Der Rest wird ignoriert. Wie kann ich die ganze Datei einlesen?

Grüße von Manfred

Datum: 24.11.2005-10:51

Beitragre: Wie kann ich eine Datei mit Leerzeilen einlesen?
Seitenanfang
Hi,
also das:

my $config = 'text.txt';
open(CONFIGFILE, $config) or die $!;

while (my $tb = <CONFIGFILE>){
print "Zeile: " . $tb . "\n";
}

close CONFIGFILE;


geht bei mir problemlos.

Hast Du vielleicht irgendwelche Sonderzeichen drin?

Was machst Du innerhalb der while Schleife? Brichst Du da irgendwo ab?

Hast Du es mit

use strict;
use warnings;

versucht?

Gruss,
svenXY

Datum: 24.11.2005-11:31

Beitragre: Wie kann ich eine Datei mit Leerzeilen einlesen?
Seitenanfang
Hallo svenXY,

hier mein Codeausschnitt:


{
#print "Hallo 2\n";
open (CONFIGFILE,"<","$configfile") || print "Fehler beim oeffnen der Konfigurationsdatei.";
#print "Hallo 3\n";
while (my $tb = <CONFIGFILE>){
#print "Hallo 4\n";
chop $tb;
my @ta = split (/ /,$tb);
#print "Hallo: \@ta: @ta\n";
if (not($ta[0] =~ m/^#/)){#Kommentar nicht ueberpruefen
if ($ta[0] =~ m/last_stk_open_directory/){
$directory_stk = $ta[1];
}
elsif ($ta[0] =~ m/last_in_sxw_open_directory/){
$directory_in_sxw = $ta[1];
}
elsif ($ta[0] =~ m/last_out_sxw_open_directory/){
$directory_out_sxw = $ta[1];
}
}
}
close CONFIGFILE;
}

Hier der Inhalt meiner Datei:


#Konfigurationsdatei fuer Perl/Tk Oberflaeche Stuecklisten Erzeugung

last_stk_open_directory /netz/compac/daten/projekte
last_in_sxw_open_directory /netz/compac/daten/projekte
last_out_sxw_open_directory /netz/compac/daten/projekte
#last_out_sxw_open_directory /home/schmid/netz/compac/daten/projekte
#

Wenn ich die Leerzeile nach "Erzeugung" und vor "last_in_stk_open_directory" entferne oder ein Kommentarzeichen einfüge funktioniert es. Sonst bricht er bei der Leerzeile mit einlesen ab und meine Variablen werden nicht aktuallisiert.

Gruß Manfred

Datum: 24.11.2005-12:14

Beitragre: Wie kann ich eine Datei mit Leerzeilen einlesen?
Seitenanfang
Hi Manfred,
also bei mir funktioniert Dein Code wie gewollt. Du kannst hoechstens das chop mit chomp ersetzten (das entfernt nur das Newline und auch nur dann, wenn eines da ist).

Du kannst auch eine Bedingung für leere Zeilen einfügen, so a la:


while (my $tb = <CONFIGFILE>){
next if $tb =~ /^$/;
chomp $tb;
print "tb is <<$tb>>\n";

aber es müsste auch so funktionieren.
Du kannst auch noch am Anfange jedes Schleifendurchlaufes Dein $tb einbmal ausgeben, um zu schauen, was tatsächlich drin steht (s. code).
Gruss,
svenXY

Datum: 24.11.2005-12:54

-






-
-