Вы намереваетесь интерпретировать $tempStr
как регулярное выражение? Если это так, то вы должны знать, что ?
является оператором регулярного выражения и не будет буквально соответствовать ?
в целевой строке.
Кроме того, после Ma
есть пробел, но в файле примера Maik
, поэтому эта часть не будет совпадать.
Эти изменения приведут к другому результату:
my $tempStr='=?UTF-8?B?U2Now4PCtm5l?=\, Ma'; # remove the extra space
grep (/\Q$rx/i, @msg_arr); # Add \Q to match the literal string $tempStr in regexp
Или вы можете сделать $tempStr
настоящим регулярным выражением с самого начала:
my $tempStr=qr/=\?UTF-8\?B\?U2Now4PCtm5l\?=\\, Ma/;
Или вы можете оставить это как строку, но поместить в синтаксис регулярного выражения (требуется дополнительное удвоение двойной обратной косой черты, очень уродливо):
my $tempStr='=\?UTF-8\?B\?U2Now4PCtm5l\?=\\\\, Ma';