From: Brother Rabbit 2:460/5858 03 Apr 2019 20:38 +0300
To: Mikhail Stakhanov 2:5020/932.1
Subject: регулярные выражения.
Hi, Mikhail! 03 апр 19 17:38, Mikhail Stakhanov -> Eugene Grosbein: EG>> /^(Hold)?,(.*?),(.*?),+/ MS> ($echo,$desc) =($2,$3) if ($_ =~ /^(Hold)?,(.*?),(.*?),+/); MS> ^^^^^ всеравно $2 $3 MS> всеравно вот так. А я за чистоту кода, хочу: MS> ($echo,$desc) = $_ =~ /^(Hold)?,(.*?),(.*?),+/); MS> ^^^^^^^ $1 $2 MS> как написать вот это чтобы работало вот так ? ($echo,$desc) =($1,$2) if ($_ =~ /^[a-z]*,([^,]+),([^,]+),.*$/i); Have nice nights. Brother Rabbit.
From: Brother Rabbit 2:460/5858 11 Jun 2019 18:37 +0300
To: Eugene Grosbein grosbein.net
Subject: что я не так делаю?
Hi, Eugene! 10 июн 19 16:36, Eugene Grosbein -> Brother Rabbit: BR>> Опечатка в тексте письма. В коде правильно. EG>>> и вообще писать аккуратно. И почитать perldoc perlre. BR>> Там сказано, что \b{} для юникода работает начиная с версии 5.22. EG> \b{} не то же самое, что \b Я знаю. EG>>> #!/usr/local/bin/perl EG>>> use 5.22.0; BR>> \b тоже только с 5.22 работает? EG> Hет. Ну, вот, у меня не работает. [fido@BroRabbit ~]$ perl -v This is perl 5, version 22, subversion 3 (v5.22.3) built for x86_64-linux-thread-multi BR>> В любом случае, в перлхуке HPT не получается BR>> использовать use 5.22.0;, т.к. ругается на необявление всех переменных, в BR>> т.ч. и вшитых в HPT перлхук. EG> Hе думаю, что это из-за use 5.22.0 - скорее, из-за use strict. Именно с включением этого появляется, с выключением пропадает. EG> Hо use strict по умолчанию врубает целую пачку разных проверок, EG> каждый тип проверки выдаёт своё сообщение. Так что показывай, EG> что конкретно пишет. 6 07:42:01 PERL: Global symbol "%config" requires explicit package name (did you forget to declare "my %config"?) at /home/fido/perl/fidogle.pm line 82. 6 07:42:01 PERL: Global symbol "$warn_addr" requires explicit package name (did you forget to declare "my $warn_addr"?) at /home/fido/perl/fidogle.pm line 82. 6 07:42:01 PERL: Global symbol "$UNS" requires explicit package name (did you forget to declare "my $UNS"?) at /home/fido/perl/fidogle.pm line 83. 6 07:42:01 PERL: Global symbol "$from_name" requires explicit package name (did you forget to declare "my $from_name"?) at /home/fido/perl/fidogle.pm line 83. 6 07:42:01 PERL: Global symbol "@Via" requires explicit package name (did you forget to declare "my @Via"?) at /home/fido/perl/fidogle.pm line 84. 6 07:42:01 PERL: Global symbol "$hpt_version" requires explicit package name (did you forget to declare "my $hpt_version"?) at /home/fido/perl/fidogle.pm line 85. 6 07:42:01 PERL: Global symbol "%config" requires explicit package name (did you forget to declare "my %config"?) at /home/fido/perl/fidogle.pm line 85. 6 07:42:01 PERL: Global symbol "%config" requires explicit package name (did you forget to declare "my %config"?) at /home/fido/perl/fidogle.pm line 85. BR>> [...skipped...] EG>>> \b обозначает границу слова в регулярных выражениях. EG>>> backspace оно обозначает внутри классов символов (в квадратных скобках) EG>>> и вне регулярных выражений при интерполяции строк. BR>> Вот, а еще сказано, что m// обрабатывается так же, как строка в двойных BR>> кавычках и там возможа подстановка переменных. Это меня и смутило. EG> Цитату в студию. Я за эту неделю столько доки по этой теме выкурил, что сейчас и не вспомню, в которой так было сказано. Have nice nights. Brother Rabbit.
From: Michael Dukelsky 2:5020/1042 11 Jun 2019 13:25 +0300
To: Eugene Grosbein grosbein.net
Subject: что я не так делаю?
Привет, Eugene! 11 June 2019 03:53, Eugene Grosbein послал(а) письмо к Michael Dukelsky: MD>> $ locale MD>> LANG=ru_RU.UTF-8 EG> utf8 это принципиально отличается от старых однобайтовых локалей, EG> поэтому требует ещё и use utf8; Не помогло. Однако, если анализируемый текст брать не из командной строки, то работает. #!/usr/bin/perl #use 5.22.0; use strict; use warnings; use locale; use utf8; my $text = "гипопотам не указ закону"; my @wrds = qw(по закону); my $w; foreach $w ( @wrds ) { print "Найдено: $w\n" if $text =~ /\b$w\b/i; } $ ./find.pl Wide character in print at ./find.pl line 13. Найдено: закону Желаю успехов, Eugene! За сим откланиваюсь, Michael. ... node (at) f1042 (dot) ru
From: Eugene Grosbein grosbein.net 17 Jul 2019 18:27 +0300
To: Stas Mishchenkov 2:460/5858
Subject: что я не так делаю?
17 июля 2019, среда, в 10:49 NOVT, Stas Mishchenkov написал(а): SM> Между тем мой эмпириокритицизм позволил мне все-таки найти корень проблемы. SM> #!/usr/bin/perl SM> use POSIX; SM> use locale; SM> 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: С". 90% за то, что система запускает бинарник без выставления локали. Eugene -- Поэты - страшные люди. У них все святое.
From: Alexey Vissarionov 2:5020/545 18 Jul 2019 12:34 +0300
To: Stas Mishchenkov 2:460/5858
Subject: что я не так делаю?
Доброго времени суток, Stas! 18 Jul 2019 09:27:28, ты -> Eugene Grosbein: SM>>> пишет в лог "locale: С". EG>> 90% за то, что система запускает бинарник без выставления локали. SM> Гм. Он у меня действительно по крону запускается от имени пользователя SM> fido, у которого, впрочем, локаль установлена нужная. Локаль - свойство процесса, а не пользователя и уж тем более не системы. -- Alexey V. Vissarionov aka Gremlin from Kremlin gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii ... Чем умные отличаются от дураков? Умные дурачатся, а дураки умничают.
From: Mikhail Stakhanov 2:5020/932.1 30 Mar 2019 10:02 +0200
To: Eugene Grosbein grosbein.net
Subject: freq скрипт
Здравствуйте, Eugene! Ответ на сообщение Eugene Grosbein (2:5006/1) к Mikhail Stakhanov, написанное 30 мар 19 в 09:58: Спасибо! Кол-во строк сократилось: #!/usr/bin/perl # Генератор freq для запросов фалов # v0.1b от 30.03.2019г. # Работает пока только с одной зоной use strict; use warnings; my $usage = \ 'EOT'; Использование: freq.pl Аргументы: node = 2:5020/932 или 5050/932 file = имя запрашиваемого файла EOT # Нужно прописать переменную outbound my $outbound="d:\\fido\\spool\\out\\"; > здесь он ругается на окончание \', как я понимаю это он воспринимает как > ' внутри константы, как правильно написать ? if ($#ARGV<1) { die $usage }; my $adr=$ARGV[0]; my $fname=lc($ARGV[1]); my ($zone, $net, $node); $adr =~ m|^(\d+?):(\d+)/(\d+)$| and ($zone,$net,$node)=($1,$2,$3) or $adr =~ m|^(\d+?)/(\d+)$| and ($net,$node)=($1,$2) and $zone='2' or die "Ошибка в формате адреса *:*/*"; print "Зона: $zone, Сеть: $net, Нода: $node\n"; > пока зону не использует, но все работает в такой конструкции а можно > как-то писать and {} чтобы не писать and ... and ... ? my $adr_hex=sprintf('%04x%04x',$net,$node); my $freq=sprintf("%s.req",$adr_hex); die "Системная ошибка $! при записи в $outbound$freq" unless open(HANDLE,">>$outbound"."$freq") and print HANDLE $fname and close(HANDLE); exit(0); ---- Всего наилучшего, Mikhail
From: Gennadij Pastuhov 2:5036/26 13 Feb 2019 13:10 +0200
To: Eugene Grosbein grosbein.net
Subject: perl strings & Encode::encode
Рад всех приветствовать! А особенно - Eugene! Среда февраля 13 19 15:51 Eugene Grosbein писал к Gennadij Pastuhov: EG> Eugene [ сожрали демоны ] Огромное спасибо! ... Jonny wanna live
From: Stas Mishchenkov 2:460/5858 13 Jul 2019 23:18 +0300
To: Eugene Grosbein grosbein.net
Subject: что я не так делаю?
Hi, Eugene! 10 июл 19 16:59, Eugene Grosbein -> Stas Mishchenkov: AV>>>>> И на то, что ТС начисто проигнорировал рекомендации держать AV>>>>> фидошный AV>>>>> софт в локали KOI8-R. SM>>>> Объясни простым языком, зачем нужна двойная перекодировка? EG>>> Чтобы корректно работал софт, заточенный только под KOI8-R EG>>> и который никто уже не будет переписывать под другие кодировки. 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>> работать и там? EG> Без понятия, надо тестировать. Вот и я думаю, что это глюк реализации пердла в HPT. EG> Hо у меня есть код, который вынужден работать с данными в неизвестной EG> внешней кодировке в отсутствие метаданных. В норме там обычно приходит EG> windows-1251, но из-за багов может поступить сырой utf-8 и код EG> обрабатывает оба случая, приводя всё к общему EG> знаменателю. Исходные данные в переменной $tmp: EG> # detect UTF-8 encoding, otherwise assume 8-bit windows-1251 EG> # Convert to internal Perl unicode EG> $tmp = $s1 = utf8::decode($tmp) ? $tmp : EG> Encode::decode('windows-1251', $s1, Encode::FB_PERLQQ); EG> Можешь что-то подобное нарисовать и себе. Но у меня-то кодировка выв базе известна. EG> Hо у меня код работает *без* use locale (мне не надо делать word EG> splitting). А мне как раз нужно split и \b$word\b юзать, а для этого use locale;. Have nice nights. Stas Mishchenkov.
From: Eugene Grosbein grosbein.net 11 Jun 2019 03:53 +0300
To: Michael Dukelsky 2:5020/1042
Subject: что я не так делаю?
10 июня 2019, понедельник, в 23:03 NOVT, Michael Dukelsky написал(а): MD> $ locale MD> LANG=ru_RU.UTF-8 utf8 это принципиально отличается от старых однобайтовых локалей, поэтому требует ещё и use utf8; Eugene
From: Eugene Grosbein grosbein.net 18 Apr 2019 12:55 +0300
To: Michael Dukelsky 2:5020/1042
Subject: strif
17 апр. 2019, среда, в 14:15 NOVT, Michael Dukelsky написал(а): EG>> @REPLY: 2:5020/932.1 5cb4c031 EG>> 15 апр. 2019, понедельник, в 18:31 NOVT, Mikhail Stakhanov написал(а): MD> Хм. А у меня этого письма нет. :-( Я должен был его получить от 5020/4441. Я MD> единственный, кто не получил это письмо от /4441? X-FTN-SEEN-BY: 50/16 109 250/25 450/1024 451/30 31 452/28 463/68 466/50 467/70 X-FTN-SEEN-BY: 469/122 5000/111 5001/100 5003/17 5005/49 5006/1 5010/275 352 5015/42 X-FTN-SEEN-BY: 5015/46 5019/42 5020/113 290 545 715 723 828 830 846 848 921 932 1042 X-FTN-SEEN-BY: 5020/1519 2047 2140 2332 3274 4441 9696 12000 5022/2 128 5023/24 X-FTN-SEEN-BY: 5026/49 99 5030/115 500 1081 5034/13 5036/26 5049/1 162 5051/44 X-FTN-SEEN-BY: 5053/57 5054/8 89 5055/37 5057/19 5059/37 5061/15 5064/56 5066/18 X-FTN-SEEN-BY: 5080/102 172 5083/1 444 5090/958 6090/1 X-FTN-PATH: 5020/932 715 4441 1042 5080/102 X-FTN-PATH: 5006/1 Eugene -- For the Colonel's Lady an' Judy O'Grady Are sisters under their skins!