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

    −379.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
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    sub pfexec { args "pfexec", @_ unless $1.$2 eq "pfexec";
      local ( $_, $lp, @rep ) = @_; $lp ||= 1;
      die 'Command string must not contain $$ sequences' if m/\$\$/o;
      1 while s/\(([^()]*)\)/'$$'.push(@rep,$1)/eo;
    # print $_,"REP:\n","=>",join( "\n=>", @rep),"\n";
      unshift @rep, ""; s/\s+/ /g;
    
    LOOP: while ( $lp-- ) {
            foreach ( split ";" ){
              my @cmd = split " "; $_ = shift @cmd; last unless m/^(\w{2})(\w+)/o;
    CMD:  foreach (@cmd){
                    1 while s/\$\$(\d+)/'('.$rep[$1].')'/eo; s/^\(\s*(.*?)\s*\)$/$1/so;
                    s/^\%(\d+)->(\w+)=//    and ${$HASH[$1]} ->{$2} = $_ and next;
                    /^\%(\d+)->(\w+)/               and $_ = ${$HASH[$1]} ->{$2} and redo CMD;
    
                    /^%%(\d+)/      and $_ = $HASH[$1] || ( $HASH[$1] = \{} ) and next;
                    /^\%(\d+)/      and $_ = ${$HASH[$1]} and next;
                    /^\#\#(\d+)/ and $_ = $CHAN[$1] || ( $CHAN[$1] = \{} ) and next;
                    /^\#(\d+)/      and $_ = ${$CHAN[$1]} and next;
              }
              $_ = $::control{$1} && $::control{$1}{$2};
              s/\^(\d+)/$cmd[$1-1]/geo and print "Expanded to: $_\n"
                    and pfexec( $_ ) if !ref;
              args $1.$2, @cmd and eval { $_->(@cmd) } if "CODE" eq ref;
              last LOOP if $@;
            }
      }

    Так пишет мой коллега

    Запостил: guest, 12 Декабря 2008

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

    • Батько:
      Малаца калега, пускай дальше пишет =]
      Ответить
    • страйко:
      а разве так пишут не все PERLовцы? :)
      Ответить
    • кереведко:
      Наворотиил...
      Ответить
    • Bobby:
      Зачетно. Ваш коллега настоящий perl hacker. Непонятно только зачем он берет ссылку от безымянного хеша, а так ничего - понравилось. Пусть, как говорится, пишет еще ^__^
      Ответить
    • Njxyzr:
      блин... спалили)) тоже люблю такие красивости наводить :) :) :) шик :)
      Ответить
    • 1 while s/// - чел не знает флажок g
      Ответить
      • Флажок g знает - строки 6 и 22.
        Десяти минут стоило разобраться - это - для правильной обработки ВЛОЖЕННЫХ скобок - начиная с самых внутренних. Собственно, для этого и проделывается вся эта лабуда с $$ - определение приоритета скобок при последовательном парсинге/замене.
        Код "слишком умный", хакерский, и действительно, для понимания и сопровождения скатывается в говно.
        Ответить

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