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

    −119

    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
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    sub getMessages{
    local($mop,$pg,$all)=@_;
    
    if(!&db_query("select insurance_faq_main.id,date_format(insurance_faq_main.date,'%d.%m.%Y'),insurance_faq_main.name,insurance_faq_main.email,insurance_faq_main.www,insurance_faq_main.city,insurance_faq_main.message,insurance_faq_main.ip,answer from insurance_faq_main, insurance_faq_ans where insurance_faq_ans.idm=insurance_faq_main.id order by id desc limit ".$pg*$mop.",$mop")) {$body .= $db_message; return -1}
    
    $id;
    @date;
    @name;
    @email;
    @www;
    @city;
    @msg;
    @ip;
    @answer;
    
    for(local $i=0;defined($rows->[$i]);$i++)
        {
        $id[$i]=$rows->[$i]->[0];
        $date[$i]=$rows->[$i]->[1];
        $name[$i]=$rows->[$i]->[2];
        $email[$i]=$rows->[$i]->[3];
        $www[$i]=$rows->[$i]->[4];
        $city[$i]=$rows->[$i]->[5];
        $msg[$i]=$rows->[$i]->[6];
        $ip[$i]=$rows->[$i]->[7];
        $answer[$i]=$rows->[$i]->[8];
        }
    return $i;
    }

    Мужской способ возвращать результаты из функции

    Запостил: Suor, 26 Апреля 2010

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

    • смахивает на перл 4 или старше. IIRC настоящие локальные переменные как и референсы появились и стали полезными только в 5ке.

      а возвращать результат запроса как простой список (return @rows;) плохо для производительности.

      скорее всего какой джигит наваял, который начал на перле ~20 лет назад писать.
      Ответить
    • тут @rows вообще глобален по отношению к getMessages. Зачем его возвращать?
      Да и к тому же, если плохо для производительности пусть возвращают ссылку - return \@rows;
      Ответить
      • так передача через глобальные переменные тут, в частности, и осуждается. @rows тут только для примера. return \@rows нельзя сделать в perl 4, как и построить массив хешей, как и использовать объявления my вместо local, так что этот код вполне нормален для perl 4. Вот только писалось это не 20 лет назад, а 6-7.

        Perl 5 вышел в 1994 году
        Ответить
    • А что вообще за конструкция @date;
      @name;
      @email;
      ...

      Что это?
      Ответить
      • видимо, так декларировались переменные, чисто для себя. Вообще-то оно тут ничего не делает
        Ответить
    • показать все, что скрытоvanished
      Ответить
      • Однажды, обходя окрестности Онежского озера, отец Онуфрий обнаружил обнажённую Ольгу. Обомлел отшельник, оторопел.
        –— Ольга, отдайся, озолочу!
        Ответствовала Ольга:
        —– Окстись, отче, отойди! Обидишь –— отомщу! Отбиваться ослабну –— откушу окоянный отросток!
        Ответить

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