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

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
  28. 28
  29. 29
  30. 30
sub hex_to_string
{
    my ($res, $str, $i) = ("", shift, 0);
    $str =~ tr/A-Z/a-z/;
    while ($i < length($str))
    {
	my $m = ord(substr($str, $i++, 1));
	my $n = ord(substr($str, $i++, 1));
	if ($m >= 48 && $m <= 57)
	{
	    $m -= 48;
	}    
	if ($m >= 97 && $m <= 102)
	{
	    $m = 10 + $m - 97;
	}    
	if ($n >= 48 && $n <= 57)
	{
	    $n -= 48;
	}
	if ($n >= 97 && $n <= 102)
	{
	    $n = 10 + $n - 97;
	}
	$res .= chr($m * 16 + $n);
    }
    
    $res = join("\n", split(/\r\n/, $res));
    return $res;
}

Печально, что силу регулярок недооценивают.
sub hex_to_string($)
{
my $input_hex_data = shift;
my $result = $input_hex_data;
$result =~ s/([a-fA-F0-9][a-fA-F0-9])/chr(hex($1))/eg;
return $result;
}

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

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

        • в перле регулярки встроены в язык, они парсятся и компилируются уже при компиляции сырца, часть синтаксиса языка.

          вдобавок простые регулярные выражения перл заменяет на обычные строчные операции. поэтому извращатся со строчными операциями в перле не имеет смысла - регулярками и проще и так же эффктивно.

          на 5.14 код приведеный свыше можно переписать так:
          sub hex_to_string($)
          {
          return ($_[0] =~ s/([a-f0-9]{2})/chr(hex($1))/egri);
          }


          хотя все равно говно потому что даже и функцию для этого заводить не надо потому что совсем правильно это делается так:
          pack('H*',$input);
          Ответить
          • >поэтому извращатся со строчными операциями
            Может быть наоборот, обычно извращаются с регулярками?
            Ответить
            • ну это же регулярки: ими можно не только работу делать 😉
              Ответить
  • если бы ещё у регулярок синтаксис был человеческий, а не красноглазо-кулхацкерский
    Ответить
    • кратко, удобно, парсируемо и при некотором навыке понятно.
      "человеческий" синтаксис означал бы тот факт, что парсер был бы сложный и медленный.
      Конечно, вы сами можете придумать таковой и написать парсер или конвертор, но, боюсь, попытка эта подобна 1С
      Ответить
    • Наоборот синтаксис максимально понятен. Просто - это как выучить иероглифы, свиду ад, но на самом деле заменяет целые слова и когда ты набираешся опыта, то уже не можешь оторваться и кажется, что всё можно описать с помощью регулярок(иероглифов).
      Тоже самое и с английскими вставками в русский язык. Просто легче выразить, но не знающий их изливает горы непонимания.
      Ответить
      • неудачный пример с иероглифами. Даже китайский есть и то - традиционный и упрощенный.
        Ответить
          • Хорошая работа. А еще Вы забыли указать, что слово "Наоборот" является вводным и должно выделятся запятой.
            Ответить
            • запятые - это третий тетан
              сначала надо осилить связность предложений
              Ответить
        • Представьте себе, регулярные выражения тоже упрощаются.
          Но упрощения могут привести еще больше непонимания.
          Просто всё упирается в непонимание .i.
          Ответить
      • а регулярки - это наиболее естественная однострочная лаконичная форма записи шаблонов и правил
        Ответить
            • регэкспами описывать синтаксис - чудовищное ебланство
              Ответить
              • синтаксис - это немного сложнее. регулярки описывают только регулярные языки, а синтаксис - тут придется использовать иные грамматики
                Ответить
  • о)O!O:Z,Y(ZP:W)U(W)ML,W$V"P:L$R(PMOO)O)M T$V!H(U:L!Q:L)K"P$F!Z?S,L(Z:J(M(H"H!E A,N:T A,K:Q?Z,W:J(Y I$K)Q(K(S E.D?HE!H.L(W T"A"A:R,Q)D$A"E(J)W,A$W(H,T:B U IYR$C!Q"B)K?A:S J!J)Z:N$Q.H,W"D.N.H$F,O(PE)I(I.B?Q!F!YJ:K V V!Q:S"TY(Y)Z?X,J(U,X!Z Q B"I"A)I?H,PF)B?C!IM(F:G,F)S$E?G!D Z,I LP!Z$O?Z Q:K.L(M"R"R?Z,I.B"G,T(C"Z$A?I,C!FS"V(D?Y"C!YO?F)F J!W"E?H)O?J)U"R F,X S)Z(H,S!P(B?X!B!Q$S(R!C(V F)U"A(J,M!A,Y,G(P"R,S(R:P$C$P!B,A:B(V.A)M?S K?C?R?L(X,P)M:W)A$M)O(S,R)PM"HU(D(J:I(G?F$G)R A:F"X$L:T"V.W!O)T!LV!W)Z,I.P.U$NЙIDAYGNVUYEGNNTRAKRYOPAUJHZLBHMZUXSAHSOLFLKDNYPXTTBDLUWUXOVIWNVYSAIFCWBQPTXDHEEXSWVGASRQCRUSTXDUZDP
    Ответить

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

Из-за тебя ушел bormand, guest!

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


    8