use strict; use Data::Dumper; my @numbers = (1,2,3,45,6,76,8,5,7,8); my(@odd, @even); foreach my $number (@numbers) { push @{ is_odd($number) ? \@odd : \@even}, $number; } print Dumper(\@odd, \@even); sub is_odd {$_[0] % 2}