in reply to Difference in the code and the subroutine

Maybe try changing:
&PopulateEventDropDown(@EventList,$eventChoice);
to
PopulateEventDropDown($eventChoice, @EventList);
and this
my $eventChoice = shift; my @Records = @_;
is then more simply described as
my ($eventChoice,@Records) = @_;
hth