如何使用正则表达式从文件名中查找键并从哈希中通过键获取值?

How to use regular expression to find the key from filename and get value by key from hash?

我有一个只有几个键值的散列,我有两种不同的文件名表达式,键在文件名里面。我需要从文件名中获取密钥,然后使用密钥从哈希中获取值。
例如

my $file1 = "MYCOM_SYS_ACCOUNT_20211212000001_00001.txt";<BR>
my $file2 = "MYCOM_SYS_20211211_BILLPROFILE_20211212000001_00032.txt";

从上面的文件名来看,键是 ACCOUNT 和 BILLPROFILE。那么如何从单个表达式中提取它呢?然后我可以从我的哈希中搜索它

my %hashmap = ( 'ACCOUNT'=>'account', 'BILLPROFILE'=>'billprofile', 'PAYMENTTERM'=>'paymentterm',....about 1000 key-values);

有人明白我的问题是什么吗?

my $alt = join "|", map quotemeta, keys %hashmap;
my $re = qr/_($alt)_/;

if ( my ($key) = $file =~ $re ) {
   my $val = $hashmap{$key};
   ...
}