[Perl] RegEx/Split Name; Vorname|TelNr1#TelNr2#TelNr3#...


0

0Flocky0

Hallo Zusammen,

habe folgendes Problem bei dem mir vielleicht jemand weiterhelfen könnte.

Ich habe Datensätze die wie folgt strukturiert sind:

Name;Vorname|TelNr1#TelNr2#TelNr3#...

Dabei ist es völlig variabel wie viele Telefonnummern dahinterstehen. Können auch bis zu 200 seien.

Name;Vorname konnt ich schon splitten:

($Name[$i],$Vorname[$i]) = split m/;/, $Benutzer[$i], 2;

Aber wie schaffe ich es die Telefonnummern noch zusätzlich ins Array mit aufzunehmen ohne zu wissen wie viele Telefonnummern dahinterhängen?

Ich hoffe ihr könnt mir hilfen. Wäre sehr dankbar!

Gruß aus Nürnberg
Flocky
 

renee

Erfahrenes Mitglied
Code:
my ($name,$vorname,@tel) = split /[;|#]/, $Benutzer[$i];

$Name[$i] = $name;
$Vorname[$i] = $vorname;
$Tel[$i] = \@tel;

Dann hast Du eine Arrayreferenz im Array @Tel.

Um später z.B. auf die Telefonnummern zuzugreifen:

print $Tel[$i]->[0]; # gibt die erste Telefonnummer aus
my @Telnummern = @{ $Tel[$i] }; # Dereferenzieren der Arrayreferen

Mehr zu Referenze siehe http://wiki.perl-community.de/cgi-bin/foswiki/view/Perldoc/perlreftut
 
0

0Flocky0

Hi Rene,

danke vielmals klappt soweit prima!

Weißt du wie ich meine Rufnummern jetzt noch counten lassen kann, damit ich die Anzahl der Rufnummern bekomme? Dann wäre es echt 1A mit Stern und Hausaufgabengutschein!
 

renee

Erfahrenes Mitglied
Die Anzahl der Elemente in einem Array bekommst Du mit "scalar( @ArrayName )". Direkt nach dem split kannst Du also "print scalar( @tel )" machen oder dann später "print scalar( @{ $Tel[$i] } );".