in reply to Explain the code

Equivalent code, with comments
use Data::Dump 'pp'; my @a = qw/2 1 3 4 5 4 3 3 4 5/; my %seen; my @result; for ( @a ) { #for each element in @a if ( not $seen{$_} ) { #if the element hasn't already been seen push @result, $_; #add it to the result set } $seen{$_}++; #note that the element's been seen } print join(",", @result), "\n"; pp \%seen; #{ 1 => 1, 2 => 1, 3 => 3, 4 => 3, 5 => 2 }

Each value in %seen is a count of how many times the key's been seen

Update: Removed a misleading comment & corrected a typo
Update^2: replaced say with print for perl<5.10 compatability (as suggested by ww)


Unless I state otherwise, all my code runs with strict and warnings