# Untested :( sub dedup { my $ref = shift; my %seen; my $c = 0; # current my $n = 0; # next available slot foreach (@$ref) { if (not $seen{$_}++) { $ref->[$n] = $_ unless $n == $c; $n++; } $c++; } $#{$ref} = $n-1; }