in reply to Do I need to do escaping in my regex check?

If you are checking one of the values is present, you don't need a regex at all.
if (! grep $_ eq $value, @$enum_values) {

If you want to match regexes, you need to store regexes, not strings. Use quotemeta to escape the strings.

map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]