my (%history, $histcount); # To add $newvalue $history{ $newvalue } = $histcount++ unless exists $history{ $newvalue }; # To retrieve the last-but-$n'th my ($last_nth) = grep{ $history{ $_ } == ($histcount - $n); } keys %history;