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)
  2. Perl / Говнокод #2862

    −110.6

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    # АРТ
        return -1 if
                    !$project_id                    ||
                    length $name > 32               || !(length $name)       ||
                    length $password > 32           || !(length $password)   ||     #########->*
                    length $repassword > 32         || !(length $repassword) ||
                    $name =~ /[^\w\d]+/ig           ||
                    $password =~ /[^\w\d]+/ig       ||
                    $repassword =~ /[^\w\d]+/ig;

    Вдохновение, хули ...

    klem4, 24 Марта 2010

    Комментарии (10)
  3. Perl / Говнокод #2673

    −155.2

    1. 1
    %words = map { $_ => $hash{$_} } grep { !proper($_) } keys %words;

    Фильтрация хэша - удаление элементов, чьи ключи не удовлетворяют некому условию.
    Конечно же использование православного for для Perl-истов ниже собственного достоинства.... :X

    Balza, 25 Февраля 2010

    Комментарии (5)
  4. Perl / Говнокод #2668

    −104.3

    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
    # (S) (рекурсивного вызова) Генерирует контент слота рекурсивного дерева (с плюсиками). Возвращает ('RecursiveSlot'=>$textbuf) или ()
    sub PlusTreeSlot {
            # (P) Путь к шаблону контентной ячейки
            # (P) ghm
            # (P) pid
            # (P) treename
            # (P) Уровень
            # (P) функция
            # (P) $ret
    
            return () if !exists($_[1]->{$_[2]}); # Не вкладываем ничего в слот если там ничего нет
            my $textbuf;
            foreach (@{$_[1]->{$_[2]}}){
                    my $ret=&{$_[5]}($_,$_[4],ref($_[6])?dclone($_[6]):$_[6]) if $_[5];
                    $textbuf.=${tmpl_prepare($_[0],{
                                    PlusTreeSlot($_[0],$_[1],$_->{'id'},$_[3],($_[4]+1),$_[5],$ret),
                                    %{$_},
                                    'trname'=>$_[3],
                    })};
            };
            return ('RecursiveSlot'=>$textbuf);
    };

    А вам тоже нравятся безымянные параметры?
    А писать код без пробелов?
    Кроме того, эта функция, вызывая себя рекурсивно, каждый раз заново открывает, читает, парсит и закрывает один и тот же файл шаблона.

    ichesnokov, 25 Февраля 2010

    Комментарии (4)
  5. Perl / Говнокод #2666

    −251.4

    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
    30. 30
    31. 31
    32. 32
    33. 33
    my $sec;
    my $min;
    my $hour;
    my $mday;
    my $mon;
    my $year;
    my $wday;
    my $yday;
    my $isdst;
    
    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =localtime(time);
    $year=$year+1900;
    $mon=$mon+1;
    if ($mon<10)
    {
    $mon='0'.$mon;
    }
    if ($sec<10)
    {
    $sec='0'.$sec;
    }
    if ($min<10)
    {
    $min='0'.$min;
    }
    if ($hour<10)
    {
    $hour='0'.$hour;
    }
    if ($mday<10)
    {
    $mday='0'.$mday;
    }

    двузначные цифры в дате

    Bracus, 25 Февраля 2010

    Комментарии (8)
  6. Perl / Говнокод #2562

    −111.2

    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
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    # куски кода выдернуты
    #  смотрите внимательно на SQL
    #--- INSERT ------
    
    my $comment_id = $ej->{dbh}->insert('blog.comments', (
    	'id::primary'          => '',
    	'post_id::numeric'     => $param_id,
    	'user_id::numeric'     => $ej->{user}{id},
    	'text'                 => $newmess,
    	'time::numeric'        => $ej->{time},
    	'rating_ball::numeric' => $rating_ball
    ));
    my $_rating_ball = 0 + $ej->Query ('SELECT SUM(rating_ball) FROM blog.comments WHERE post_id = '.$param_id)->FetchRow;
    
    $ej->Query(
    	'UPDATE blog.posts SET update_time = '.$ej->{time}.', rating_ball = '.$_rating_ball.', '.
    	'comments_ptr = CONCAT('.Q(pack('L', $comment_id)).', comments_ptr)  WHERE id = '.$param_id
    );
    
    #--- DELETE ---
    
    $ej->Query('DELETE FROM blog.comments WHERE id = '.$comment_id);
    
    my $comments_ptr = pack('L*', $ej->Query('SELECT id FROM blog.comments WHERE post_id = '.$post_id.' ORDER BY time DESC')->FetchCol);
    my $_rating_ball = 0 + $ej->Query ('SELECT SUM(rating_ball) FROM blog.comments WHERE post_id = '.$post_id)->FetchRow;
    
    $ej->Query('UPDATE blog.posts SET comments_ptr = '.Q($comments_ptr).', rating_ball = '.$_rating_ball.' WHERE id = '.$post_id);
    
    
    #--- SELECT ----
    
    my %q = $ej->Query('SELECT user_id, topic_id, name, text, SUBSTRING(comments_ptr, '.(1+($page-1)*40).',40) AS ptr, round(length(comments_ptr) / 4) AS cnt, create_time, pics_ptr, rating_ball FROM blog.posts WHERE id = '.$param_id)->FetchHash;
    
    my @id = (); my @user_id = (); my @text = (); my @time = ();
    
    if ($q{ptr} ne '') {
    	my $r = $ej->Query('SELECT id, user_id, text, time FROM blog.comments WHERE id IN ('.join(',',unpack('L*', $q{ptr})).') ORDER BY time DESC');
    	@id      = $r->FetchCol;
    	@user_id = $r->FetchCol(1);
    	@text    = $r->FetchCol(2);
    	@time    = $r->FetchCol(3);
    }
    
    # потом еще вывод через Ж

    это работает на mySQL/PERL.
    да зачем нам реляционная база, мы сами можем манипулировать отношениями.
    comments_ptr это BLOB, c упакованным в него массивом int32 id'шников из comments.id
    хотя и есть comments.post_id <=> posts.id

    просто праздник какой-то!

    bmp20, 07 Февраля 2010

    Комментарии (1)
  7. Perl / Говнокод #2476

    −257.7

    1. 1
    sub count {scalar(@{[@_]})}

    Из себя выдавил)

    RolCom, 23 Января 2010

    Комментарии (13)
  8. Perl / Говнокод #2457

    −113.6

    1. 1
    2. 2
    3. 3
    4. 4
    sub append {
        my $appendstring = @_[0];
        $returnstring = "$returnstring$appendstring";
    }

    Из плагина к nagios'у, который проверяет состояние интерфейсов на cisco-девайсах. http://svn.opsview.org/opsview/trunk/opsview-core/nagios-plugins/check_snmp_cisco_ifstatus .

    aag, 20 Января 2010

    Комментарии (16)
  9. Perl / Говнокод #2418

    −109.5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    sub title {
        my ($str, $len) = @_;
    
        while (1) {
            last if substr($str, $len, 1) eq ' ';
            ++$len;
        }
    
        return substr($str, 0, $len) . "...";
    }

    аналог Index.

    klem4, 15 Января 2010

    Комментарии (5)
  10. Perl / Говнокод #2334

    −352.1

    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
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    #!/usr/bin/perl
    while ($colresults = $rez->fetchrow_hashref()) {
    		$hour = $colresults->{'TIME'};
    		if ($hour == '00') {$value0 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '01') {$value1 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '02') {$value2 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '03') {$value3 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '04') {$value4 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '05') {$value5 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '06') {$value6 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '07') {$value7 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '08') {$value8 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '09') {$value9 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '10') {$value10 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '11') {$value11 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '12') {$value12 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '13') {$value13 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '14') {$value14 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '15') {$value15 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '16') {$value16 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '17') {$value17 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '18') {$value18 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '19') {$value19 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '20') {$value20 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '21') {$value21 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '22') {$value22 = $colresults->{'VALUE_NUM'}};
    		if ($hour == '23') {$value23 = $colresults->{'VALUE_NUM'}};
    	if ($d_name ne $colresults->{'DNAME'}) {
    		unless ($first) {
    			push @result, {
    				N => $n_name,
    				C => $c_name,
    				D => $d_name,
    				TIME0 => get_temp($value0),
    				TIME1 => get_temp($value1),
    				TIME2 => get_temp($value2),
    				TIME3 => get_temp($value3),
    				TIME4 => get_temp($value4),
    				TIME5 => get_temp($value5),
    				TIME6 => get_temp($value6),
    				TIME7 => get_temp($value7),
    				TIME8 => get_temp($value8),
    				TIME9 => get_temp($value9),
    				TIME10 => get_temp($value10),
    				TIME11 => get_temp($value11),
    				TIME12 => get_temp($value12),
    				TIME13 => get_temp($value13),
    				TIME14 => get_temp($value14),
    				TIME15 => get_temp($value15),
    				TIME16 => get_temp($value16),
    				TIME17 => get_temp($value17),
    				TIME18 => get_temp($value18),
    				TIME19 => get_temp($value19),
    				TIME20 => get_temp($value20),
    				TIME21 => get_temp($value21),
    				TIME22 => get_temp($value22),
    				TIME23 => get_temp($value23),
    			};
    			$value0 = undef;
    			$value1 = undef;
    			$value2 = undef;
    			$value3 = undef;
    			$value4 = undef;
    			$value5 = undef;
    			$value6 = undef;
    			$value7 = undef;
    			$value8 = undef;
    			$value9 = undef;
    			$value10 = undef;
    			$value11 = undef;
    			$value12 = undef;
    			$value13 = undef;
    			$value14 = undef;
    			$value15 = undef;
    			$value16 = undef;
    			$value17 = undef;
    			$value18 = undef;
    			$value19 = undef;
    			$value20 = undef;
    			$value21 = undef;
    			$value22 = undef;
    			$value23 = undef;
    		}
    		
    		...
    	}
    
    }
    .... # продолжение не менее захватывающее

    Феерический код из одной не малоизвестной организации :)

    SoulSeeker, 25 Декабря 2009

    Комментарии (6)