#!/usr/bin/perl use strict; use warnings; my @uniq; my $add = uniq_array( \@uniq ); $add->(3,1,4,1,5,9); $add->(2,7,2,7,2,7); print "$_\n" for @uniq; sub uniq_array { my ($aref, %uniq) = shift(); return sub { push @$aref, grep { ! $uniq{$_}++ } @_ }; }