Хотя ответ Кента обдумывается заранее, ошибка просто говорит вам, что вы не объявили $connection
как лексическую ("мою") переменную. Таким образом, Perl интерпретирует это как то, что вы должны ссылаться на глобальный пакет.
Raw Perl не жалуется, когда вы используете неопределенную переменную, он считает его глобальным пакетом. Кажется, у вас где-то есть strict
(стандартная и рекомендуемая практика), которая требует, чтобы вы объявили свои переменные перед их использованием. Если вы не объявили переменную в текущем пакете (или «пространстве имен»), она предполагает, что вы ссылаетесь на переменную, объявленную в другом пакете, поэтому она попросит вас добавить имя пакета, просто чтобы все было ясно и наглядно ,
Perl использует my
для объявления переменных области и our
для объявления глобальных переменных пакета.
my $connection = "Rainbow";
OR
our $connection = 'French';
<ч />
На случай, если вы ошиблись, сообщение об ошибке исчезнет, если вы выключите его, ваша проблема не исчезнет. И они могут уйти в подполье.
{ no strict;
my @rows = getConfigTableRows( $nothing, @other_stuff );
}
Perl просто не будет жаловаться , что $nothing
- ничто. И эта легко исправляемая ошибка может вызвать более тонкие ошибки в других местах. Кроме того, подумайте, если вы успешно присвоили $connection
, введите только:
{ no strict;
my @rows = getConfigTableRows( $connecion, $config_table, $mySoftwareVersions );
}
Perl дает вам сообщение о '$connecion'
и, надеюсь, вы можете сказать, что это была опечатка, и, по крайней мере, 30 минут не замечать ее и задаться вопросом, является ли ваш запрос неправильным или что-то еще.