"[yY]") func_show -->
[yY]) func_show
Note the missing quotes.
They are missing since we want to do REGEX, not STRING compare.
Otherwise it will only execute if user entered a literal: [yY]
The 2nd case statement
${menu[2]} was back in the original threads, just as an example how to use the numeric value of the array.
However, it w/could work, IF the array item was properly formated -- it lacks the same cause as: yY, but in this case, just let away the quotes.
Also, but just from the looks of it, untested, your perl command needs some care regarding escape chars for the quotes within the perl command.
HINT: Try simpler scripts, get used to the syntax before doing such things you do since a week
Hope this gets you started.