[perl] Vorhandes Array [Name;Vorname/n] in zweidimensionales Array splitten


FlockY

Mitglied
Mahlzeit Community!

Vorab: Ich beschäftige mich jetzt seit ein paar Wochen mit perl und bin jetzt auf ein Problem gestoßen dass ich partu nicht lösen kann.

Ich habe ein Textdatei mit folgendem Schema

Code:
Name;Vorname/n
Name;Vorname/n
Name;Vorname/n
Diese lasse ich ein ein Array einlesen. Klappt auch prima:

Code:
open(READ,$dateiname)
my @benutzer=<READ>;
Jetzt möchte ich Name und Vorname aufsplitten und in ein Zweidimensionales Array packen. Meinetwegen auch in 2 einzelne Arrays aufsplitten.

Ich hab jetzt schon 2 Stunden mit meinem Freund Google verbracht und hab schon wieder unzählige graue Haare dadurch verursacht.

Die Lösung ist bestimmt banal, deswegen wende ich mich an euch.

Bin um jeden Vorschlag dankbar.

Schöne Grüße aus Nürnberg!
Flocky
 
Hallo Flocky,

das könntest du direkt beim Einlesen erledigen:
Perl:
open(READ,$dateiname)
my @benutzer;
while (<READ>) {
  push(@benutzer, [split(';')]);
}
Grüße, Matthias
 

FlockY

Mitglied
Werde ich ausprobieren.

Vielen lieben Dank für die schnelle Antwort!

[edit]
Ist das jetzt schon ein zweidimensionales Array? Wenn ja wie kann ich es ausgeben?

Code:
print "@benutzer[1][1]";
Das funktioniert leider nicht. Und wenn ich nur print @benutzer; ausführen lasse kommen Hexwerte :(

Gruß
Flocky
 
Zuletzt bearbeitet:

renee

Erfahrenes Mitglied
print $benutzer[1]->[1];

Du musst hier dereferenzieren. Zweidimensionale Arrays muss man in Perl mit Referenzen lösen. Hier findest Du die deutsche Version von perldoc perlreftut: http://wiki.perl-community.de/cgi-bin/foswiki/view/Perldoc/perlreftut

Ein sehr nützliches Modul in Verbindung mit komplexen Datenstrukturen ist Data::Dumper:

Code:
#!/usr/bin/perl

# strict und warnings sollten in jedem Perl-Programm Pflicht sein
use strict;
use warnings;

# Modul für Ausgabe von komplexen Datenstrukturen
use Data::Dumper;

# baue 2-dim-Array
my @benutzer = (
  [ 'hans', 'maus'],
  [ 'hugo', 'katze'],
  [ 'hubert', 'hund'],
);

# gib das 2-dim-array aus
print Dumper \@benutzer;
Damit kann man sich gut anschauen, was in so einer Datenstruktur wirklich drinsteckt...