Как заставить perl завершиться с кодом ошибки при использовании неинициализированного значения? - PullRequest
0 голосов
/ 22 ноября 2018

Я не вижу, как заставить Perl завершиться с ошибкой при использовании неинициализированного значения.Есть ли способ сделать это поведение по умолчанию?Спасибо.

https://perlmaven.com/use-of-uninitialized-value

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Ответ Дейва уверен, что это лучший выбор для описанного варианта использования.

Вот еще одно решение, которое демонстрирует использование обработчика предупреждающего сигнала (см. http://perldoc.perl.org/functions/warn.html).

Преимуществоиспользование обработчика сигнала - это гибкость: вы можете перехватывать любые предупреждения, анализировать их, а затем реализовывать любое поведение, которое вам нравится. В данном случае это избыточное, но может быть полезно в более сложных случаях.

use strict;
use warnings;
use feature "say";

local $SIG{__WARN__} = sub {
    if ($_[0] =~ /^Use of uninitialized value/) {
        die $_[0]; 
    } else { 
        warn $_[0] ;
    }
};

my $foo;
say "Foo is $foo";
say "Dont get here";
0 голосов
/ 22 ноября 2018

Возможно, что-то вроде этого:

#!/usr/bin/perl
use strict;
use warnings;
use warnings FATAL => qw[uninitialized];
use feature 'say';

my $foo;

say "Foo is $foo";
say "Don't get here"; 

Закомментируйте строку FATAL, чтобы увидеть стандартное поведение.

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