$stuff = [ 'cat', 'dog', 'pig', 'cow' ]; my %stuff map { $_ => 1 } @$stuff; my @elements = keys $stuff; for ($elements[int rand scalar @elements]) { $stuff{$_} = 0; @elements = grep $_, keys %stuff; # your code here, $_ being either a cat, a dog, etc. } for (keys %stuff) { $stuff{$_} = 1 }