1. Perl / Говнокод #16701

    −153

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    eval {
            my $from = $class->get_env_sender($message);
    
            $smtp->mail($from)
                || croak("Email::Send::Gmail: error sending 'from' $from");
    
            my @to = $class->get_env_recipients($message);
    
            my @ok = $smtp->to( @to, { SkipBad => 1 } )
                || croak("Email::Send::Gmail: error sending 'to' @to");
    
            if ( @to != @ok ) {
                my %to;
                @to{@to} = (1) x @to;
                delete @to{@ok};
                @bad = keys %to;
            }
    
            croak("Email::Send::Gmail: no valid recipients") if @bad == @to;
        };

    Думаю понятно, какой это модуль с CPAN. Убило незнание приоритетов, в результате чего "|| croak" всегда возвращало в @ok число вместо результата выполнения $smtp->to

    Запостил: NeoliteBSD, 16 Сентября 2014

    Комментарии (14) RSS

    • Слова "Perl" и "понятно" рядом не употребляются.
      Ответить
    • >Убило незнание приоритетов, в результате чего "|| croak" всегда возвращало в @ok число вместо результата выполнения $smtp->to
      Убивает незнание того, что для || результат return; и return 0; НЕ одно и тоже :)
      Ответить
      • В смысле? По идее return; должен возвращать пустой список, а return 0; дожно возвращать скаляр. Оба в булевом контексте дают false.

        Вот иллюстрация, на случай, если я не так понял: http://ideone.com/kW6BdH
        Ответить
        • У тебя же все видно, что происходит! Читаем от сюда: http://perldoc.perl.org/perlop.html#C-style-Logical-Or и ниже. Очень внимательно. А потом, переходим туда, куда хотели, но промахнулись: http://perldoc.perl.org/perlop.html#Logical-or-and-Exclusive-Or

          P.S. Использовать || можно везде, где не собираемся возвращать список, либо делаем развертку через [defined] wantarray.
          Ответить
    • я всегда говорил что злоупотреблее `or`ом в перле до добра не доводит.

      это не незнание приоритетов - кто-то очепятолся и написал `||` вместо `or`.

      но код от исправления этого имо сильно лучше не станет.
      Ответить
      • я всегда говорил что злоупотребление `перл`ом до добра не доводит.
        fixed
        Ответить
        • Большая сила -- большая ответственность. Это как раз случай Perl.

          Сегодня, в завтрашний день, программировать на Perl могут не только лишь все, мало кто может это делать.
          Ответить
          • офф топ
            Сегодня нашел http://rghost.ru/58060348
            Ответить
            • Да юзерскрипт-генератор и то умнее, чем он.

              Креатив зачётный, да.
              Ответить
              • Можно публиковать отдельным говнокодом... И обучать на нём бредогенератор. Чем чёрт не шутит, вдруг что-то путное напишет.

                На meta.ua есть текстовая версия: http://forum.meta.ua/topic/t/186713.html
                Ответить
    • Лол
      Ответить

    Добавить комментарий