Джош имеет правильный ответ, но если вы включите строгие предупреждения и предупреждения, вы могли бы найти его для себя. Вот (в основном) ваш скрипт, каким он был изначально:
my($strWholeName) = "Bob_Jones";
my($m_strFirstName) = "Bob";
if($strWholeName =~ m/$m_strFirstName_(.+)/) {
print "Last name is <$1>\n";
}
, что привело к следующему:
C:\temp>perl test.pl
Last name is <Bob_Jones>
Если добавить две следующие строки:
use strict;
use warnings;
вместо этого вы получите следующий вывод:
C:\temp>perl test.pl
Global symbol "$m_strFirstName_" requires explicit package name at test.pl line
7.
Execution of test.pl aborted due to compilation errors.
Добавьте скобки за ответ Джоша, и вы, наконец, получите:
C:\temp>perl test.pl
Last name is <Jones>
Всегда, всегда, всегда use strict
и use warnings
!
См. Руководство Брайана по решению любой проблемы Perl из Освоение Perl для получения более изящных трюков.