|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 04 Mar 2008 12:51:37 To : Dmitry E. Oboukhov Subject : Re: нескалярный контекст -------------------------------------------------------------------------------- Dmitry E. Oboukhov -> Artem Chuprina @ Tue, 04 Mar 2008 10:17:18 +0300: AVG>>> было бы здорово, если тока не трудно. AVG>>> блин, век живи - век учись. AC>> m//g в скалярном контексте работает следующим образом. DEO> кстати а кто подскажет DEO> иногда надо избавиться от скалярного контекста, а потом все же опять DEO> перейти к скалярному. DEO> например: DEO> my $string="abc abc dhjj abc dhjhdj abc"; DEO> нужно посчитать количество вхождений в строку подстроки abc DEO> my $abccount=$string=~/abc/g; DEO> не работает по вышеуказанной причине (ставится закладка а не делается DEO> общее количество сравнений). DEO> скобки тоже не работают DEO> в итоге приходится вставлять фиктивный map: DEO> my $abccount=map {$_} $string=~/abc/g; DEO> а нельзя как-то обойтись без map и без промежуточной переменной @tmp ? $abccount=($string=~s/abc/$&/g)+0 "+0" надо затем, что если там 0 вхождений, результат будет пустым (undef, надо полагать) DEO> и еще задачка которую все никак не найду как изящно решать DEO> имеется массив @array; DEO> избавляемся от дупов: DEO> { DEO> my %t=map{ ($_, 0) } @array; DEO> @array=keys %t; DEO> } DEO> опять же как такое просто сделать без временной переменной %t? keys %{{map{($_,0)} @array}} -- Artem Chuprina RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru The last good thing written in C was Franz Schubert's Symphony number 9. -- Erwin Dieterich --- ifmail v.2.15dev5.4 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/315138c7489f0.html, оценка из 5, голосов 10
|