Grep in Liste von Listen

Hallo,

ich hab folgende Datenstruktur:

@Liste[$index][$datenfelder]

also zum Beispiel @Liste[1][0] ist ein Bezeichung,
@Liste[1][1] ist die dazu passende Position, @Liste[1][2] die Art usw.
(etwas erweitertes Beispiel):

Bezeichnung Pos. Art
apl1        5     Holz
jska        20    Stein
99aj        50    Stoff
kko3        20    Pelz

a.) Vielleicht könnte man das auch mit einem Hash von Listen machen?
b.) Wie kann man diese Liste greppen?

Ich möchte zum Beispiel eine neue Liste (auch zweidimensional), in der alle Einträge stehen, die @Liste[][1] = 20 oder so.
Es soll dann eine Neue Liste @Neue_Liste geben, in der ich dann alle Datenfelder aller Einträge hab, in der an Position [X][1] 20 steht (bei beliebigem X).

Ich hoffe das war verständlich.

my @Neue\_Liste = grep(/20/, @Liste[1]);

funktioniert natürlich nicht.

Vielen Dank für Eure Hilfe, ich finde wirklich nirgendwo eine gute Lösung dazu.
Mathias

Hallo,

ich hab folgende Datenstruktur:

@Liste[$index][$datenfelder]

also zum Beispiel @Liste[1][0] ist ein Bezeichung,

$Liste[1][0] bitte!

@Liste[1][1] ist die dazu passende Position,
@Liste[1][2] die Art usw.
(etwas erweitertes Beispiel):

Bezeichnung Pos. Art
apl1        5     Holz
jska        20    Stein
99aj        50    Stoff
kko3        20    Pelz

a.) Vielleicht könnte man das auch mit einem Hash von Listen
machen?

my %spalten = (
 bezeichnung =\> [qw(apl1 jska 99aj kko3)],
 pos =\> [5, 20, 50, 20],
 art =\> [qw(Holz Stein Stoff Hold)],
);

Aber je nach dem, was du damit machen willst, wäre ein Array von Hashes günster:

my @items = (
 { 
 bezeichnung =\> 'apl1',
 pos =\> 5,
 art =\> 'Holz',
 },
 { 
 ...
 }
);

b.) Wie kann man diese Liste greppen?

Ich möchte zum Beispiel eine neue Liste (auch
zweidimensional), in der alle Einträge stehen, die
@Liste[][1] = 20 oder so.

my @neu = grep { $\_-\>[1] == 2 } @Liste;

Oder wenn du eine Liste von Hashes hast:

my @neu = grep { $\_-\>{pos} == 2 } @Liste;

Vielen Dank für Eure Hilfe, ich finde wirklich nirgendwo eine
gute Lösung dazu.

Lies dir mal das hier durch:

http://perldoc.perl.org/perllol.html
http://perldoc.perl.org/perlreftut.html
http://perldoc.perl.org/perldsc.html

Grüße,
Moritz

Hi,

danke, super, das hilft schonmal. Die Dokumentation hab ich zum Teil gelesen aber ich bin ehrlich gesagt ein bisschen zu blöd dafür. Vor allem wird - wie ich finde - nicht so gut erklärt, wie man dann auf etwas aufwendigere Datenstrukturen zugreift…

Also, vielen Dank nochmal

Gruß
Mathias