Thread Newbie - Einlesen von Text in arrays (18 answers)
Opened by PatrickS at 2004-12-27 15:24

Strat
 2005-01-04 01:08
#50379 #50379
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=PatrickS,29.12.2004, 08:39]ich versuch jetzt die Zeilen in Arrays einzulesen und mithilfe der & zu splitten.[/quote]
dafuer kannst du die Funktion ParseLine verwenden, die ich oben angegeben habe. Da bekommst du einen Hash zurueck, z.B.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
unless (open (FH, $filename)) {
  die "Error: couldn't read '$filename': $!";
}
while (<FH>) {
  chomp($_); # zeilenumbruch am ende killen
  my %items = &ParseLine($_);

  # mach was mit %items
} # while
close (FH);
# -----------------------------------------------------
sub ParseLine {
  my ($line) = @_;

  my %data = ();
  foreach my $item (split(/,/, $line)) { # item ist z.B. "Ursrpung=001"

    # $key ist z.B. "Ursprung", $value z.B. "001"
    my ($key, $value) = split(/=/, $item, 2);

    # in hash speichern; achtung, falls ein key mehrere werte hat, bleibt nur
    # der letzte
    $data{$key} = $value;
  } # foreach

  return %data;
} # ParseLine


So Sachen parse ich nur ungern mit regulaeren Ausdruecken, denn wenn sich die Reihenfolge der Felder aendert oder neue Felder hinzukommen, fliegt einem der regulaere Ausdruck um die Ohren, und man bekommt gar nichts mehr (ok, sowas kann ja gewuenscht sein). Mit split nach hash bekommt man da die neuen felder auch gleich automatisch\n\n

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

View full thread Newbie - Einlesen von Text in arrays