From: Eugene Grosbein grosbein.net 04 Apr 2019 17:54 +0300
To: Mikhail Stakhanov 2:5020/932.1
Subject: еще 1.
03 апр. 2019, среда, в 17:23 NOVT, Mikhail Stakhanov написал(а): MS> Hе могу сообразить как отпрезать: MS> ($key,$desc) =($1,$2) if ($_ =~ /^(.*?)\s(.*+)(\s|#|;)?+$/); MS> ^^^^^ MS> вот здесь: MS> $1 до 1го пробела MS> $2 до последнего пробела или конца строки MS> если есть #что то или ;что-то то это отрезать MS> строка вида: MS> Inboud /var/.... # Что-то не берется... Во-первых, $_ =~ /.../ никогда писать не надо, так как $_ используется по дефолту и лучше просто писать if /.../; Оператор =~ применяет /.../ к указанной недефолтной переменной и он не нужен в случае $_. Во-вторых: /^(.+?)\s+([^#;\s]+)/ То есть, в начале идёт непустая строка до первого пробела, затем один или более пробелов, затем вторая строка матчится жадно, но в неё не включаются пробелы, решетки и точка с запятой, то есть матчинг закончится перед такими символами, если они есть. И если дальше там что-то есть - оно нас никак не интересует и мы этот хвост даже матчить не будем. Eugene
From: Eugene Grosbein grosbein.net 18 Jul 2019 18:00 +0300
To: Stas Mishchenkov 2:460/5858
Subject: что я не так делаю?
18 июля 2019, четверг, в 09:27 NOVT, Stas Mishchenkov написал(а): SM>>> Между тем мой эмпириокритицизм позволил мне все-таки найти корень SM>>> проблемы. #!/usr/bin/perl use POSIX; use locale; my $old_locale; SM>>> $old_locale = setlocale(LC_CTYPE); SM>>> print "$old_locale\n"; SM>>> в командной строке печатает ru_RU.IBM866, а в filter.pl SM>>> use POSIX; SM>>> use locale; SM>>> my $old_locale; SM>>> $old_locale = setlocale(LC_CTYPE); SM>>> w_log( "locale: $old_locale\n" ); SM>>> пишет в лог "locale: С". EG>> 90% за то, что система запускает бинарник без выставления локали. SM> Гм. Он у меня действительно по крону запускается от имени пользователя fido, у SM> которого, впрочем, локаль установлена нужная. Если не делать отдельных телодвижений, то локаль вместе со всем окружением наследуется от процесса-родителя, в данном случае от крона. Поменяй строку запуска "команда" на: env LC_ALL=ru_RU.IBM866 команда Eugene
From: Mikhail Stakhanov 2:5020/932.1 06 Apr 2019 01:55 +0300
To: Mikhail Stakhanov 2:5020/932.1
Subject: в чем ошибка ?
Здравствуйте, Mikhail! Ответ на сообщение Mikhail Stakhanov (2:5020/932.1) к All, написанное 06 апр 19 в 01:38: Сорри вопрос снят, наверное надо спать идти! конечно же $files{$tmp}="$i"; >>> !!! %files{$tmp} = "$i"; Всего наилучшего, Mikhail
From: Mikhail Stakhanov 2:5020/932.1 22 Apr 2019 13:00 +0300
To: Eugene Grosbein grosbein.net
Subject: помогите!!!
Здравствуйте, Eugene! Ответ на сообщение Eugene Grosbein (2:5006/1) к Mikhail Stakhanov, написанное 21 апр 19 в 19:31: вот это работает: >---=== Куть он "msrif.pl" ===--- begin 644 msrif.pl M(R$O=7-R+V)I;B]P97)L"@IM>2`D87)G(#T@)$%21U9;,%T["B,@2!H879E('-E=F5R86P@;&EN97,I"B,@4V%Y+"!Y;W4@ M:&%V92!A;&EAPH@("`@(R!B=6EL9"!F:6QE(&QI M7!E(&8@,CXO9&5V+VYU;&P@?"!G&ET(#$@:68@*"`A("US("1A M2P@)'9A;"`I(#T@&ET(#$@ M:68@*"`D4U))1DE[("=R97%U97-T;&ES="<@?2!E<2`D4U))1DE[("=R97-P M;VYS96QIR`G+UQ<+R\G("UE("=S+UPD+UPD M+R<@?"!G+RLO)R`^("134DE&27L@)W)E&ET(&EF("@@(2`M9"`D86QI87-E M'0@:68@*"`D9B`]?B`O6UPJ7#]<+UTO("D["B`@ M("`D9B`]("1A;&EA+RLO)R`^/B`D4U))1DE[ C("=R97-P;VYS96QI&ET.PH` ` end >---=== Куть офф "msrif.pl" ===--- А вот это нет: >---=== Куть он "strif.pl" ===--- begin 644 strif.pl M(R$O=7-R+V)I;B]P97)L"@HC(%-T('-R:68@9G)E<2!P2!3 M>7-O<"!O9B`R.C4P,C`O.3,R0&9I9&]N970*"G5S92!S=')I8W0["G5S92!W M87)N:6YG2`D=7-A9V4@/2`\/"`G14]4)SL*"E5S86=E('-T'AX*3L* M"2UI(#T@8G5I;&0@:6YD97@["@H)9FEL96-O;F9I9R`]('!U="!I="!I;B!S M8W)I<'0["@ER971U'AX('=I=&@@86QL(&9O=6YD(&9I;&5S M.PH*14]4"B,@(2$@T)?0L-"\T+70O=&/T+70O"#0M]"TT+71@=&,(-"ZT+#1 M@M"PT+O0OM"ST+@@T+_0OM"T(-&!T+70L=&/("$A"FUY("1B87-E7V1IVQO9V1I"@D*2![ M(`H);7D@)&)?9&ER(#T@7"Y\?"!I9B`D7D\@/7X@ M+TU35VEN+SL*"6UY("1F:6YD7W)U;&4@/2!&:6QE.CI&:6YD.CI2=6QE+3YN M97<["@H))&9I;F1?T8C0N-"QT+K0L"#0OM&"T+K1@-&+ MT8+0N-&/(-&$T+#0N="[T+`@)&EN9&5X7V1IPH)=U]L;V"@D8V]N9FEG>VEN9&5X9&ER?2D@.PH)=U]L;V2!`9FEL97-?9&ER.PH);7D@)69I;&5S M/2@I.PH);7D@)&D],#L*"69OR$O7EPN+R`F)B`M9B`B)&1IR1F:6QEPH) M"61E;&5T92`D9FEL97-[)&ME>7T@:68@*"$D=F%L=64I.PH)?0H)"0H);7D@ M0&9I;&5S7VQE='1E2`D:V5Y("AS;W)T(&ME M>7,@)69I;&5S*2!["@D)"6EF("@D:V5Y(#U^("]>)&QE='1ER1F:6QE3L)"@D)"0D))&9I;&5S7VQE='1ER1K97E]6R1I73L*"0D)"7T*"0D)"21O=71?:6YD("L] M)&-O=6YT.PH)"0D)(W!R:6YT("(D9FEL97-?;&5T=&5R6R1O=71?:6YD75M= M7&XB.PH)"0H)"0E]"@D)?0H)"6EF("@D;W5T7VEN9"`A/2`P*2!["@D)"6]P M96X@1DE,12P@(CXB+"(D:6YD97A?9&ER(BXB"(@;W(@9&EE(")#86XG="!C2`D:3TP.R`D:3Q`9FEL97-?;&5T=&5R.R1I*RLI('L*"0D)"0EP2`D2DL*"1T;2T^;6]N*2LQ+"@D=&TM/GEE87(I M*S$Y,#`I*3L*"7=?;&]G*")297%U97-T(&9R;VT@04M!.B`DW-Y2!`<&%R=',@/2`H M*3L*"6UY("5D:7)S(#TH*3L*"69O%]D:7(B+B)D:7)S+FQS="(I.PH)"6UY("1D7V9O M=6YD(#T@*"D["@D);7D@)&-US%]+V<@:68@*"1F:6QES%]+V<@:68@*"1F:6QE%]D:7(B+B)S M=')?(BXD<&%R='-;,%TN(BYI9'@B(&]R(&1I92`BPH)"0DH)&-U2`HPH)"0D)"0D)"21F:6QEW)EW)E<75ER=R97-P;VYS96QI7-T96T@(F-P("UF("1SW)ER=R97-P;VYS96QI&ET.P`` ` end >---=== Куть офф "strif.pl" ===--- в чем ошибка ? Всего наилучшего, Mikhail
From: Brother Rabbit 2:460/5858 09 Jun 2019 16:11 +0300
To: Michael Dukelsky 2:5020/1042
Subject: что я не так делаю?
Hi, Michael! 09 июн 19 14:18, Michael Dukelsky -> Brother Rabbit: BR>> $words = 'по закону'; BR>> @wrds = split(" ", $words); BR>> foreach $w ( @wrds ) { BR>> $found = 0 if $text ~= /$w/i; BR>> } BR>> Находит "по новому закону", "попа закону", "гипопотам не указ закону". BR>> Цель же найти тролько слово целиком. MD> Не совсем понял, что ты хочешь. MD> #!/usr/bin/perl MD> my $words = "по закону"; MD> my $text = "гипопотам закону не указ"; MD> my @wrds = split(" ", $words); MD> my $found = 0; MD> foreach my $w ( @wrds ) MD> { MD> print "w = $w\n"; MD> if($text =~ /$w/i) MD> { MD> $found = 1; MD> last; MD> } MD> } MD> print "found = $found\n"; MD> Находит "по" в слове "гипопотам". Это то, что ты хотел? Наоборот. Я хотел, что бы находилось только "по", но не "гипопотам". #!/usr/bin/perl use locale; [...skipped...] if ( defined( $words ) ) { $found = 1; @wrds = split(" ", $words); foreach $w ( @wrds ) { $found = 0 if $msgtext !~ /[\.\, \t\r]${w}[\.\, \t\r]/i; } } [...skipped...] Вот так вылавливает слово целиком, но не слова, его содержащие. Однако, эта конструкция [\.\, \t\r] не эквивалентна \b. Между тем, у меня острое ощущение, что при таком использовании \b транслируется не в границу слова, а в символ Back Space. Have nice nights. Brother Rabbit.
From: Stas Mishchenkov 2:460/5858 18 Jul 2019 09:27 +0300
To: Eugene Grosbein grosbein.net
Subject: что я не так делаю?
Hi, Eugene! 17 июл 19 18:27, Eugene Grosbein -> Stas Mishchenkov: SM>> Между тем мой эмпириокритицизм позволил мне все-таки найти корень SM>> проблемы. #!/usr/bin/perl use POSIX; use locale; my $old_locale; SM>> $old_locale = setlocale(LC_CTYPE); SM>> print "$old_locale\n"; SM>> в командной строке печатает ru_RU.IBM866, а в filter.pl SM>> use POSIX; SM>> use locale; SM>> my $old_locale; SM>> $old_locale = setlocale(LC_CTYPE); SM>> w_log( "locale: $old_locale\n" ); SM>> пишет в лог "locale: С". EG> 90% за то, что система запускает бинарник без выставления локали. Гм. Он у меня действительно по крону запускается от имени пользователя fido, у которого, впрочем, локаль установлена нужная. Have nice nights. Stas Mishchenkov.
From: Eugene Grosbein grosbein.net 16 Jan 2019 03:15 +0200
To: Gennadij Pastuhov 2:5036/26
Subject: XML::Xerces
15 янв. 2019, вторник, в 18:35 NOVT, Gennadij Pastuhov написал(а): GP> Кто-нибудь юзает сабж? Как можно его установить в последнем debian 9? Инструкцию по сборке-то читал? http://xerces.apache.org/xerces-p/ Ставишь xerces-c3, прописываешь переменные как в инструкции, а потом как любой непакетированный перловый модуль: perl Makefile.PL && make && make test && make install Или рисуешь пакет сам. Eugene
From: Eugene Grosbein grosbein.net 10 Jul 2019 16:59 +0300
To: Stas Mishchenkov 2:460/5858
Subject: что я не так делаю?
10 июля 2019, среда, в 09:53 NOVT, Stas Mishchenkov написал(а): AV>>>> И на то, что ТС начисто проигнорировал рекомендации держать фидошный AV>>>> софт в локали KOI8-R. SM>>> Объясни простым языком, зачем нужна двойная перекодировка? EG>> Чтобы корректно работал софт, заточенный только под KOI8-R EG>> и который никто уже не будет переписывать под другие кодировки. SM> т.е. ты хочешь сказать, что если у меня перловый скрипт корректно отрабатывает SM> вот такой код: SM> use locale; SM> @wrds = split(' ', $s_words); SM> foreach $w ( @wrds ) { SM> if ( $msgtext =~ /(.{0,10})\b($w)\b(.{0,10})/si ) { SM> print "Found: $1__$2__$3\n"; SM> } else { print "\'$w\' not found.\n"; } SM> } SM> и при этом тот же код не работает в прелхуке HPT, то в KOI8-R все будет SM> работать и там? Без понятия, надо тестировать. Hо у меня есть код, который вынужден работать с данными в неизвестной внешней кодировке в отсутствие метаданных. В норме там обычно приходит windows-1251, но из-за багов может поступить сырой utf-8 и код обрабатывает оба случая, приводя всё к общему знаменателю. Исходные данные в переменной $tmp: # detect UTF-8 encoding, otherwise assume 8-bit windows-1251 # Convert to internal Perl unicode $tmp = $s1 = utf8::decode($tmp) ? $tmp : Encode::decode('windows-1251', $s1, Encode::FB_PERLQQ); Можешь что-то подобное нарисовать и себе. Hо у меня код работает *без* use locale (мне не надо делать word splitting). Eugene -- Устав от вечных упований, Устав от радостных пиров
From: Mikhail Stakhanov 2:5020/932.1 06 Apr 2019 01:38 +0300
To: All
Subject: в чем ошибка ?
Здравствуйте, All! ---- my @files_dir; my %files={}; my $i=0; foreach my $dir (@dirs) { opendir(DIR, $dir) or die "can't open $!"; @files_dir = grep !/^\.\.?$/, readdir DIR; close DIR; print join ("\n",@files_dir); foreach my $tmp (@files_dir) { $tmp=decode("cp1251",$tmp) if $^O =~ /MSWin/; >>!!! %files{$tmp} = "$i"; } $i++; ---- Can't modify key|value hash slice in list assignment at ...pl line !!!, near ""$i";" с @dirs все нормально! нужно %files = ( filename => i(номер директории)) Всего наилучшего, Mikhail
From: Gennadij Pastuhov 2:5036/26 30 Jan 2019 17:33 +0200
To: All
Subject: hash, продолжение
Рад всех приветствовать! А особенно - All! Встретил сегодня такую конструкцию: my $handler = { owner_changed => 'process_owner_changed', changed => 'process_changed', created => 'process_created', }->{$event}; Здесь что, внутренний массив является ключом хэша? ... Jonny wanna live