Perl делает разные вещи на двух разных платформах - PullRequest
4 голосов
/ 13 мая 2011

На Mac OSX это прекрасно работает с perl

perl -v
This is perl, v5.8.9 built for darwin-2level
perl -e 'sub test {}'

Но на Солярисе

perl -v
This is perl, v5.8.8 built for i86pc-solaris-thread-multi
perl -e 'sub test {}'
Illegal declaration of anonymous subroutine at -e line 1.

Есть идеи?

Спасибо, Келли

Ответы [ 2 ]

3 голосов
/ 13 мая 2011

Это, скорее всего, разница в поведении между двумя версиями Perl.Это также, вероятно, просто ошибка в режиме оценки CLI в 5.8.8

Попробуйте этот тест, чтобы увидеть, является ли это только оценкой CLI или самим Perl:

use strict;
sub test {}

Если он проходит строгий режимв файле, это, вероятно, так же хорошо, как это получится.

1 голос
/ 13 мая 2011

perldoc perldiag говорит:

  • Незаконное объявление анонимной подпрограммы
    (F) При использовании ключевого слова sub для создания анонимной подпрограммы, Вы всегда должны указывать блок кода. См perlsub

Возможно, это файл sitecustomize.pl. не видит "тест". Это читается как 'sub'. Попробуйте набрать perl -e 'test {}' в командной строке.

Также, чтобы извлечь файл настройки, вы можете добавить ключ -f в командную строку. под-тест perl -fe {} '

perldoc perlrun для получения дополнительной информации.

...