my %group = ( ad1 => 1, ad2 => 2, ad3 => 3 ); my @rndselect = map { ($_) x $group{$_} } keys %group; $advertinfo->{advert} = $rndselect[rand @rndselect];