Struppi: Doppelte Listeneinträge entfernen

Beitrag lesen

undef %saw; @out = grep(!$saw{$_}++, @in);

hab ich im archiv gefunden. weiss nicht ob ich das überhaupt verstehen will :) aber ich brauchs.

wie sag ichs in perl wenn mein $_ aus mehreren positionen besteht und ich davon nur das dritte element brauche ? also so:

$in[0] "frosch;gruen;333;quak;sommer"
$in[1] "kroete;grau;333;quaak;herbst"
$in[2] "amsel;grau;533;sing;abend"
$in[3] "spatz;grau;433;sing;morgen"
$in[4] "katze;weiss;433;miau;immer"
$in[5] "katze;schwarz;533;frisst;maus"
$in[6] "frau;schwarz;333;ist;schoen"
$in[7] "frau;weiss;433;ist;alt"
...

@out muss dann heissen:

$out[0] "333"
$out[1] "533"
$out[2] "433"

z.b. auch so:

use strict;  
my @in = (  
"frosch;gruen;333;quak;sommer",  
"kroete;grau;333;quaak;herbst",  
"amsel;grau;533;sing;abend",  
"spatz;grau;433;sing;morgen",  
"katze;weiss;433;miau;immer",  
"katze;schwarz;533;frisst;maus",  
"frau;schwarz;333;ist;schoen",  
"frau;weiss;433;ist;alt"  
);  
  
my %saw;  
grep  !$saw{( split/;/,$_)[2]}++  , @in;  
my @out = keys %saw;  
print join "\n", @out;

Struppi.

--
Javascript ist toll (Perl auch!)