Beat: Problem mit Tie::file und zeilenende

Beitrag lesen

#######################################################
<username>Dauna</username>
<name>Nicole</name>
<alter>18</alter>
<sonstiges>perl</sonstiges>
#######################################################
(ohne die rauten (#))

Warum schreibst du nicht eine zeile pro User

<userid>1</userid><username>Dauna</username><name>Nicole</name><alter>18</alter><sonstiges>perl</sonstiges>
<userid>2</userid><username>Kalle</username><name>Noona</name><alter>1</alter><sonstiges>js</sonstiges>

Das ändern geht leicht nur das aufrufen ist für mich unmöglich.
Also ich möchte jetzt zum beispiel "Nicole" angezeigt bekommen dazu schreib ich die datei beziehungsweise den namensraum in ein array und splitte ihn, mein versuch sieht so aus:

#!/usr/bin/perl -w

use strict;

open (LIST, "<list.txt");

while (<LIST>) {
if ($_ =~ m/<username>Dauna</username>/i) {
my @ke = split/<\w+>\w+</\w+>\s+/, $_;
print "$ke[0]\n"
print "$ke[1]\n";

usw.

}
}
close LIST;

aber das ist natürlich ein komplett falscher ansatz das merk ich selber

my %user;

while (<LIST>) {
  if ($_ =~ m/<username>Dauna</username>/i) {
    while( $_ =~ s/^<(\w+)>([^<>]*)</\1>// ){
       # wir verwenden while mit s/// um eine Endlosschleife zu vermeiden
       # während du ein Tagname und Werte und \1 wieder Tagname findest
       # Speichere Tagname in $1 und wert in $2
       $user{$1} = $2 || ''; # $2 könnte leer sein
    }
  }
}

mfg Beat

--
Woran ich arbeite:
X-Torah
   <°)))o><                      ><o(((°>o