[perl, прикол]вот так

Barbie29

print qq#Hello World!\n#;
это программа!!
а это два""""! (кто знает что прога делает? )

#!/usr/bin/perl
$_=qq~
1234
34 -4567
 3456
-0.35e-0,2
    56grf45
-.034 E20
     -.034 e2,01 -,045 e-,23
  -,034 e201 3e-.20
-,045 e-,23 e-0.88
4 E-0.20
22
E-21
 -0.2 w 4 3
345
2 ^-,3
~;
$a='[+-]?\d*[,.]?\d+';print"$_\n"for/$a\s?[e^]$a|$a|[+-]?e$a/ig

gopnik1994

ты че курил?
чего тебя так плющит?

Elina74

Имхо, боян.

lilia_rass

Чё это за хрень?

rosali

Спасибо! {} for //; это для меня открытие. Помните тред про то как одним регекспом обработать <table> <tr> <td>. Так вот это и есть способ такое сделать. Ну плюс еще надо знать (?{})

kruzer25

Так вот это и есть способ такое сделать
Поподробнее - что-то я не врубаюсь...
А, и ещё - там надо было это сделать, используя php'шную preg_replace

rosali

нет, на php не знаю как, там нет конструкции (?{} надеюсь
а на перле вот он шедевр

[xenon ~]$ perl -e '$_ = "<table><tr><td>x</td><td>y</td></tr><tr><td>z</td></tr></table>";
{} for m#<table>(?:<tr>(?:<td>([^<]*?{print "$1 "})</td>)*(?{print "\n"})</tr>)*</table>#g;'
x y
z

Я тут подумал надо бы написать программу, которая по DTD генерирует регексп разбирающий такие XML-и. Ну в смысле когда это возможно...
PS. О! оказывается 'for' то нафик не нужен!..

Barbie29

регексп //g возвращает список, по которому работает for

rosali

Ну это просто чудеса! Никогда бы не подумал, что перл ленивый язык... Или это просто ошибка в интерпретаторе перла?

[xenon ~]$ perl -e '$_ = "abcdaabbcedabvadecbbce"; @x = /(?:([ab]?{$x.="$1 "}+/g; print $x'
a b a a b b a b a b b
[xenon ~]$ perl -e '$_ = "abcdaabbcedabvadecbbce"; /(?:([ab]?{$x.="$1 "}+/g; print $x'
a b

Barbie29

да нормально все вроде бы...
 
 
[observ vlc-0.8.4a 18:17:31]# cat x.pl
#!/usr/bin/perl -w
$_ = "abcdaabbcedabvadecbbce";
@x = /(?:([ab]?{$x.="$` $1 $'"}+/g;
print "[ $x ]\n";
$x='';
$_ = "abcdaabbcedabvadecbbce";
/(?:([ab]?{$x.="$` $1 $'"}+/g;
print "[ $x ]\n";
[observ vlc-0.8.4a 18:17:37]# perl x.pl
[ a bcdaabbcedabvadecbbce b cdaabbcedabvadecbbceabcd a abbcedabvadecbbceabcd a bbcedabvadecbbceabcd b
bcedabvadecbbceabcd b cedabvadecbbceabcdaabbced a bvadecbbceabcdaabbced b vadecbbceabcdaabbcedabv a
decbbceabcdaabbcedabvadec b bceabcdaabbcedabvadec b ce ]
[ a bcdaabbcedabvadecbbce b cdaabbcedabvadecbbce ]
[observ vlc-0.8.4a 18:17:39]#
 

rosali

Не понял, что нормального то?
Один и тот же оператор
 /(?:([ab]?{$x.="$` $1 $'"}+/g;  

Работает по разному, в зависимости от того, присваивается результат его работы в переменную или нет. Уж от перла такого никак не ожидал Фанаты перла, проясните?

Barbie29

в зависимости от того, присваивается результат его работы в переменную или нет
ну смотри, ты сам пишешь, "присваивается или нет". но если не присваивается, // возвращает false, так?

rosali

А! спасибо, прояснилось. скалярный/нескалярный контекст типа... Ну ладно, будем знать

Barbie29

ок, вот еще, просто ради любопытства
почему так

#!/usr/bin/perl -w
if('00'){print "ok\n";} else {print "bred\n"}
if('0'){print "ok\n";} else {print "bred\n"}

?

rosali

Ну это то уже просто перловая глупость тут как раз нечем гордиться

Barbie29

просто перловая глупость

не, просто перл сложный интерперетируемый язык и от этого, имхо (я не ездец тут в компиляторах и интерпретаторах в 10 раз медленнее, чем си
кароче, я лично фанат перла, мне всё по№уй на скорость, оно, короче, рулит. вот. пусть и медленно, не так развито ООП как у питона или дельфи, руби или haskell (не знаю не писал, но народ вроде пишет вобщем)... но всеж так вот вобщем значит.

bvasilik

Barbie29

и чо? в огороде бузина а в киеве дядька...

bvasilik

А то, что жить в съёмной квартире, не совая наса дальше неё из-за того, что сильно привык, прося Захара принести квасу, и на перле программить из-за лени - одного поля ягоды.

Barbie29

да на себя посмотри, just for fun есть такая шняга...

bvasilik

Сообщение удалил

Barbie29

да отчегож?

ruler

Потому что '0' интерпретируется перлом как 0. Где-то в документации про это написано вероятно.

eduard615

надо думать, что в perlsyn в разделе Truth and Falsehood
Оставить комментарий
Имя или ник:
Комментарий: