[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
 
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
 
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!
 
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] } );".
 

Neue Beiträge

Zurück