Thread RegEx gesucht: ziemlich groß (8 answers)
Opened by pktm at 2003-09-30 21:46

Strat
 2003-10-01 00:14
#59174 #59174
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Bitte diesen Beitrag ignoieren => die Frage passt nicht so wirklich dazu....

7,5 MB in einen einzigen String einzulesen ist schon ein wenig speicherfressend... sind die Datensaetze zufaellig durch eine Leerzeile getrennt? Wenn ja, koenntest du was auf die Art:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
unless (open (FILE, $filename)) {
 # errorhandling
}
else {
 local $/ = "\n\n";
 while (<FILE>) { # $_ enthaelt nun einen Block

 } # while
 close (FILE);
} # else

oder mit CPAN:Tie::File arbeiten und dem Konstruktor als recsep = "\n\n"; mitgeben.

Falls nicht, kannst du vielleicht den Umbrechpunkt durch \nName:\s+ festlegen, z.B.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
my $recordSeparator = "\nName:\s+";
unless (open (FILE, $filename)) {
 # errorhandling
}
else {
 local $/ = $recordSeparator;
 while (<FILE>) {
   chomp($_); # entfernt $recordSeparator am Ende
   s/^\Q$recordSeparator\E//; # entfernt beim ersten Datensatz $recordSeparator
   my ($name, @rest) = split(/\n/, $_);
   my %item = (Name => $name);
   foreach my $line (@rest) {
     my ($key, $value) = split(/\:\s+/, $line, 2); # an : aufsplitten
     $item{$key} = $value;
   } # foreach
   
   # mach was mit %item
 } # while
 close (FILE);
} # else
\n\n

<!--EDIT|Strat|1064953555-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread RegEx gesucht: ziemlich groß