In the perl module Regexp::Grammars, consider the following token:
<token: command> <%commands>
This token is part of a complex grammar, parsing a wide variety of different sentences.
This token matches any word in the hash %commands, which I have defined as follows (of course, outside any function):
our %commands = (
'Basic_import' => 1,
'Wait' => 1,
'Reload' => 1,
'Log' => 1,
);
This works, for matching keywords like "Basic_import", "Wait", etc. However, I also want it to match on words like "basic_import", "wait", etc.
How do I make this hash case insensitive without having to copy and paste every keyword multiple times? Because this is part of a complex grammar, I want to use Regexp::Grammars, and I'd prefer not to have to revert to a grep for this particular exception.
You can use Hash::Case::Preserve to make hash lookups case insensitive:
Output:
Note that you have to
tie
the hash before inserting any values into it.