[Perl] Array controleren op dubbele inhoud

Pagina: 1
Acties:

  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 17:36

Koffie

Koffiebierbrouwer

Braaimeneer

Topicstarter
Ik krijg een aantal waarde's terug in een array.
De hoeveelheid en inhoud van de waardes ken ik niet.
Toch wil de dubbele waardes eruit halen.

Echter, vraag ik me af hoe.
Ik had bedacht om eerst maar een sorted kopie van de array te maken;
code:
1
@temp_array = sort(@array1);

Vervolgens met een loop kijken of de eerste $array voldoet aan iets anders, en als dat zo is verwijderen met:
code:
1
$deleted = shift(@temp_array);

Maar ik kom er nog niet helemaal uit hoe ik dat dan werkende krijg.
Is hier een standaard truukje voor, of wat dan ook?
Zit ik uberhaupt aan de juiste manier te denken :?

Braaikamer - Smoke&BBQ


  • tomato
  • Registratie: November 1999
  • Niet online
Zoiets zou kunnen:
code:
1
2
3
4
5
6
my @array = (234, 12, 435, 234, 29, 45, 45);
my %unique;

map { $unique{$_} = 1 } @array;

@array = reverse keys %unique;

Maar ik kan zo nog een paar manieren bedenken. Idee zal meestal wel zijn om de reeds gevonden waarden in een hash bij te houden...

[edit]

Of zo
code:
1
2
3
4
5
6
7
8
9
my %keys;
my @unique;

map {
    push @unique, $_ unless $keys{$_};
    $keys{$_} = 1;
} @array;

# nu zitten ze in @unique