[Moscow.pm] (без темы)

Nikolay Mishin mi на ya.ru
Ср Ноя 16 07:27:43 PST 2011


Hi Moscow-pm,
perl v5.8.4 
Не правда ли получается кривовато, что при 
my $EMPTY = undef;
our ( $start_date, $end_date ) = ( $EMPTY, $EMPTY );
#считываем входные параметры
if ( ( $start_date ne '' ) && ( $end_date ne '' ) ) {
        my $RGX_DATE_FULL = qr{.*(\d{2}-\w{3}-\d{4}).*}smo;
}

то возможен 
Use of uninitialized value in string ne at Search.pm line 227.

и приходиться инициализировать строки пробелами

my $SPACE       = q{ };
our ( $start_date, $end_date ) = ( $SPACE, $SPACE );
if ( ( $start_date ne ' ' ) && ( $end_date ne ' ' ) ) {
        my $RGX_DATE_FULL = qr{.*(\d{2}-\w{3}-\d{4}).*}smo;
}
из

В принципе я уже все решил, просто крик души,
видимо нужно больше писать тестов и тогда меньше будет вылетать неожиданных ошибок

все-таки как удобно в pl-sql обрабатывать ошибки:

DECLARE
   pe_ratio NUMBER(3,1);
BEGIN
   SELECT price / earnings INTO pe_ratio FROM stocks
      WHERE symbol = 'XYZ';  -- might cause division-by-zero error
   INSERT INTO stats (symbol, ratio) VALUES ('XYZ', pe_ratio);
   COMMIT;
EXCEPTION  -- exception handlers begin
   WHEN ZERO_DIVIDE THEN  -- handles 'division by zero' error
      INSERT INTO stats (symbol, ratio) VALUES ('XYZ', NULL);
      COMMIT;
   ...
   WHEN OTHERS THEN  -- handles all other errors
      ROLLBACK;
END;  -- exception handlers and block end here
--

здесь я тоже понимаю, что нужно
use Try::Tiny;

# handle errors with a catch handler
try {
    if ( ( $start_date ne ' ' ) && ( $end_date ne ' ' ) ) {
        my $RGX_DATE_FULL = qr{.*(\d{2}-\w{3}-\d{4}).*}smo;
    }

}
catch {
    warn "caught error: $_ \$start_date:*$start_date* \$end_date:*$end_date*"
      ;    # not $@
};

но какая лень берет покрывать весь модуль такими штуками, утешает лишь то, что
это приходиться делать только с местами, где находится ошибка (а их ограниченное количество)


Nikolay Mishin


Подробная информация о списке рассылки Moscow-pm