Вопрос о времени компиляции - PullRequest
2 голосов
/ 26 февраля 2011
#!/usr/bin/env perl
use warnings;
use 5.012;

say "no semicolon"

say "World";
say "World";
say "World";
say "World";
say "World";

# syntax error at ./perl1.pl line 7, near "say"
# Execution of ./perl1.pl aborted due to compilation errors.

.

#!/usr/bin/env perl
use warnings;
use 5.012;

my $character = "\x{ffff}";

say "Hello";
say "Hello";
say "Hello";
say "Hello";
say "Hello";

# Unicode non-character 0xffff is illegal for interchange at ./perl1.pl line 5.
# Hello
# Hello
# Hello
# Hello
# Hello

Почему второй скрипт не сообщает мне, что произошла ошибка времени компиляции?

Когда я не могу - с помощью «использовать предупреждения FATAL => qw (all);» - поймать ошибку с помощью Try :: Tiny или block-eval, могу ли я сделать вывод, что это ошибка времени компиляции?

#!/usr/bin/env perl
use warnings FATAL => qw(all);
use 5.012;
use Try::Tiny;

my $character;

try {
    $character = "\x{ffff}";
} catch {
    die "---------- caught error ----------\n";
};

say "something";

# Unicode non-character 0xffff is illegal for interchange at ./perl1.pl line 9.

1 Ответ

7 голосов
/ 26 февраля 2011

Unicode non-character 0xffff is illegal for interchange at ... является предупреждением времени компиляции.

Когда вы use warnings FATAL => all, вы просите Perl рассматривать все предупреждения как ошибки, следовательно, это становится ошибкой времени компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...