use Sub::Lexical; sub find_key_dupes { my $binary_tree=shift; my $key=shift; my @dupes; my sub get_dupes($) { my $node=shift; return unless $node; if ($node->{key} lt $key) { get_dupes($node->{right}); } else { push @dupes,$node if $node->{key} eq $key; get_dupes($node->{left}); } } get_dupes($binary_tree); return \@dupes; }