=()= / Говнокод #138 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2a0e6a">[email protected]</a>;
        }
  }

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

Запостил: guest guest, (Updated )

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

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

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8