LINUX.ORG.RU

История изменений

Исправление gh0stwizard, (текущая версия) :

А в чём ошибка, собственно?

Ошибка в том, что функция может возвращать список, когда отработала корректно или не возвращать ничего. Тут два решения:

  • Меняем or на ||. Но это костыль, т.к. поведение or и || в контексте применения вместе с die должно быть идеинтичным.
  • Меняем 0 на (), либо на return;

Использовать wantarray в данном случае нет необходимости, т.к. функция всегда возвращает список.

Заблуждение, что return 0; в контексте массива равносильно скалярному контексту:

my @data = 0 or die "WRONG";
my $rv = 0 or die "GOOD";
my @data = () or die "GOOD";

Исходная версия gh0stwizard, :

А в чём ошибка, собственно?

Ошибка в том, что функция может возвращать список, когда отработала корректно или не возвращать ничего. Тут два решения:

  • Меняем or на ||. Но это костыль, т.к. поведение or и || в контексте применения вместе с die должно быть идеинтичным.
  • Меняем 0 на (), либо на return;

Использовать wantarray в данном случае нет необходимости, т.к. функция всегда возвращает список.

Заблуждение, что return 0; в контексте массива равносильно скалярному контексту:

my @data = 0 or die "WRONG";
my $rv = 0 or die "GOOD";