splice @$arr, --$i, 1 if $seen{$arr->[ $i++]}++; #### sub remove_dup { my @arr = (1,1); #,2, 1, 3, 1, 4, 3, 1); my %seen; for ( my $i = 0; $i < scalar @arr; $i++){ splice @arr, $i--, 1 if $seen{$arr[ $i]}++; } print @arr, " "; }