Согласно perldoc perldata
, что когда идентификатор используется в curly, например, при доступе к хэш-значению через ключ, этот идентификатор считается строкой и рассматривается как таковой. Кавычки будут приниматься автоматически, однако, все более сложное может быть интерпретировано.
От perldata
На самом деле, идентификатор внутри такой
curlies является строкой, так как
любой простой идентификатор в хэше
нижний индекс. Не нужно цитировать. наш
более ранний пример, $days{'Feb'}
может быть
записывается как $days{Feb}
и кавычки
будет принято автоматически. Но
ничего более сложного в
индекс будет интерпретироваться как
выражение. Это значит например
что $version{2.0}++
эквивалентно
$version{2}++
, а не
$version{'2.0'}++
.
Поскольку .
используется для конкатенации строк, я предполагаю, что интерпретатор пытается объединить эти две строки вместе. Независимо от того, всегда лучше просто использовать кавычки, чтобы сделать это явным, и если у вас есть строгий , он, вероятно, выдаст ошибку «голое слово запрещено».
Решение вашей проблемы:
$rec->{'reqHdrs.bla'}