Ошибка Perl, не могу использовать определенный (@array).Как я могу это исправить? - PullRequest
0 голосов
/ 08 октября 2018

Я получаю эту ошибку -> "Не могу использовать 'define (@array)' (Может быть, вы просто должны опустить определение ()?)"

В этой строке кода:

if ( defined( @{ $linkbot{"$nroboton"} } ) ) {

Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Используйте define для самой переменной $nroboton и / или if (@{$linkbot{$nroboton}}) для анонимного массива, ссылка на который является значением этого ключа, как объяснено.

После того, как вам нужно проверить любойИз этого следует, что вам также может понадобиться проверить, есть ли ключ $nroboton в хэше %linkbot, с существует

if ( exists $linkbot{$nroboton} ) { ... }   # warning if $nroboton undef

, так что в целом

if (defined $nroboton and exists $linkbot{$nroboton}) { ... }

и теперь вы можете проверять и работать с данными в arrayref, @{$linkbot{$nroboton}}.

Обратите внимание, что нет необходимости заключать в кавычки эту переменную;это будет оценено.

0 голосов
/ 08 октября 2018

определено проверяет, является ли скалярное значение неопределенным, поэтому оно бессмысленно для массива.Вы можете проверить, определен ли скаляр, прежде чем использовать его как arrayref, или, если вы пытаетесь проверить, является ли массив пустым, просто удалили define (), как говорится в сообщении об ошибке.

# if this hash value is defined
if (defined $linkbot{$nroboton}) {

# if this referenced array has elements
if (@{ $linkbot{$nroboton} }) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...