in reply to An error message to understand

Asking the Wise Monks(reg) to explain odd aspects of perl is generally a Wise Move(reg), but I wonder if it's the most time-efficient way of answering your question.

I would have suggested altering the script to place a print statement or two at that point:

foreach (@CHOICE) { print "\$_ is ", ( defined $_ ? "'$_'.\n" : "undefined.\n" ); if ($_ =~ /2001\sCensus\sOutput\sArea/){

Or ( my preference ) run the program in the debugger, and find out what's happening at that point.

--
TTTATCGGTCGTTATATAGATGTTTGCA