@deck=(0 ... 51); $card=32; prune_deck($card, \@deck); print join("\n",@deck); sub prune_deck ( my $dupe = shift; # we assign $dupe to the id of the card we just pulled my $deckref = shift; my @remainder; # a scratch array to hold what's left for my $card (@{$deckref}) { $card eq $dupe ? next : push(@remainder, $card); # save current card if not the one we pulled } @{$deckref}=(undef); # empty the deck push @{$deckref}, @remainder; # push back the remainder 1; }