From: Michael Dukelsky 2:5020/1042 11 Jun 2019 16:39 +0300
To: Eugene Grosbein 2:5020/1042
Subject: что я не так делаю?
Привет, Eugene! 11 June 2019 13:25, Michael Dukelsky послал(а) письмо к Eugene Grosbein: MD> Не помогло. Однако, если анализируемый текст брать не из командной MD> строки, то работает. Надо было внимательнее читать perlrun. :) #!/usr/bin/perl use strict; use warnings; use locale; use utf8; my @wrds = qw(по закону); my $w; foreach $w ( @wrds ) { print "Найдено: $w\n" if $ARGV[0] =~ /\b$w\b/i; } $ perl -CAO ./find.pl "гипопотам не указ закону" Найдено: закону Желаю успехов, Eugene! За сим откланиваюсь, Michael. ... node (at) f1042 (dot) ru
From: Eugene Grosbein grosbein.net 09 Apr 2019 16:23 +0300
To: Mikhail Stakhanov 2:5020/932.1
Subject: кодировка 2
09 апр. 2019, вторник, в 07:00 NOVT, Mikhail Stakhanov написал(а): MS> У меня входной файл MS> первый MS> plain/text us-ascii MS> второй MS> binary us-ascii MS> decode("us-asciii",$переменная); Во-первых, слишком много "i". Во-вторых, нет никакого смысла для "перекодировок" ASCII, потому что все кодировки, включая utf-8 и перловский внутренний юникод "пересекаются" именно по ASCII - такие символы одинаковы во всех кодировках (кроме EBCDIC, которую ты не встретишь). MS> не помогает. MS> use open IN =>"utf8" OUT =>"utf8" MS> тоже не помогло. MS> print "$п1 = $п2" MS> выводит их одинаково MS> abc = abc MS> что не так ? Так и должно быть. "Перекодировки" ничего не меняют в случае ASCII. Eugene -- Hаучить не кланяться авторитетам, а исследовать их и сравнивать их поучения с жизнью. Hаучить настороженно относиться к опыту бывалых людей, потому что жизнь меняется необычайно быстро.
From: Mikhail Stakhanov 2:5020/932.1 18 Apr 2019 21:36 +0300
To: All
Subject: помогите!!!
Здравствуйте, All! В общем перепробывал все. Вот это работает: `grep -v '*' $SRIFI{ 'requestlist' } | sed -e 's/ //' -e 's/\?/\./g' -e 's/^/\\//' -e 's/\$/\$/' | grep -if - $filelist 2>/dev/null | sed 's/^/+/' > $SRIFI{ 'responselist' }`; просто привожу строчку целиком, тут все sed не важны. А вот это нет: open RL, ">".$srif{'responselist'} or die "System error $! of writing $srif{responselist}"; for (my $i = 0; $i < scalar($j); $i++) { chomp($files_found[$i]); print RL "+$files_found[$i]\n"; w_log("Found file: $files_found[$i]"); } close RL; Поигрался с ковычками $srif{responselist}, $srif{'responselist'} и "$srif...." не помогло... system "echo $files_found[$i] > $srif{'responselist'}"; Сделал так, тоже не помогло... В ЧЕМ ПРОБЛЕМА? Всего наилучшего, Mikhail
From: Eugene Grosbein grosbein.net 13 Jun 2019 16:37 +0300
To: Brother Rabbit 2:460/5858
Subject: что я не так делаю?
12 июня 2019, среда, в 08:45 NOVT, Brother Rabbit написал(а): BR> С локалью все в порядке, я думаю. Регистронезависимый поиск в русском языке BR> работает с use locale; и не работает без этого. Это ничего не значит. В локали вполне может быть правильный collation (данные регистре), но кривой ctype - такое встречалось. Имя IBM866 (вместо стандартного CP866) намекает на то, что вместо полноценной локали у тебя какой-то самопал недоделанный. BR> Однако, \b почему-то не находится даже с use 5.22.0. Это не проблема перла, это проблема используемой системной локали. Eugene
From: Mikhail Stakhanov 2:5020/932.1 19 Jan 2019 02:03 +0200
To: All
Subject: txt2pkt
Здравствуйте, All! а есть ли сабдж на эхотаге ? может кто писал уже ? Всего наилучшего, Mikhail
From: Eugene Grosbein grosbein.net 29 Jan 2019 00:12 +0200
To: Gennadij Pastuhov 2:5036/26
Subject: +key => +value
28 янв. 2019, понедельник, в 16:44 NOVT, Gennadij Pastuhov написал(а): GP> Иногда встречаю в коде выражения вида: GP> { GP> -key => "value", GP> } GP> upd: GP> или GP> { GP> response => '+response', GP> } GP> С этим разобрался, просто строка :) А вот минус в ключе - пока загадка. Дефис это просто часть строки. То есть, если ты используешь -key при задании значений, то и выбирать значения тоже должен так же: $hash{'-key'} Дефис тут ничем не отличается от букв k, e, y. Eugene
From: Gennadij Pastuhov 2:5036/26 13 Feb 2019 12:04 +0200
To: All
Subject: perl strings & Encode::encode
Рад всех приветствовать! А особенно - All! Поясните, плз, видимо, я чего-то не до конца понимаю. my $str = "некая строка"; В $str имеем строку во внутреннем перловом формате. Соответственно, все языковые средства должны работать с ней корректно. Но строка имеет "старую" однобайтовую кодировку. use utf8; my $str = "некая строка"; $str опять во внутреннем формате, но может содержать уникодные символы. Все языковые средства опять должны работать корректно? my $str = Encode::encode_utf8("некая строка"); Теперь $str хранит строку с BOM, каждый символ закодирован уникодными кодовыми позициями? И языковые средства тут хз как отработают? ... Jonny wanna live
From: Mikhail Stakhanov 2:5020/932.1 05 Apr 2019 23:29 +0300
To: Eugene Grosbein grosbein.net
Subject: UTF-8 CP866
Здравствуйте, Eugene! Ответ на сообщение Eugene Grosbein (2:5006/1) к Mikhail Stakhanov, написанное 05 апр 19 в 16:38: EG> 05 апр. 2019, пятница, в 05:37 NOVT, Mikhail Stakhanov написал(а): MS>> Ответ на сообщение Alexey Vissarionov (2:5020/545) к Mikhail MS>> Stakhanov, написанное 04 апр 19 в 18:36: MS>>>> Слушайте а как вы кодите ? MS>>>> вот я писал сегодня прогу в винде в фаре, потом перенес ее на MS>>>> linux и там отстроил, так у меня usage и системные сообщения MS>>>> UTF-8 А все для внутренних фидо файлов CP866 AV>>> use Encode; MS>> from_to у меня не работает.... не понимаю почему. EG> А внимательно читал доку на Encode? EG> from_to требует 1) переменной, а не константной строки, 2) переменной EG> с данными во внешней кодировке, а не внутреннем перловском EG> представлении, то есть нельзя в качестве теста тупо присвоить EG> переменной строковую константу и попытаться её перекодировать через EG> from_to, если текст скрипта в utf-8, а константа не чисто латинница, EG> которая перед стартом кода неявно транслируется во внутреннее EG> представление. EG> А ты для чего конкретно пытаешься применить from_to? EG> Эта функция редко бывает полезна на самом деле, потому что чаще всего EG> perl все данные конвертирует во внутреннее представление при обычном EG> файловом вводе-выводе автоматически, а для таких переменных EG> нужно использовать encode() вместо from_to(). use strict; use warnings; use Encode qw(decode encode); use utf8; opendir(DIR, "d:\\") or die "can't open $!"; my @files = grep !/^\.\.?$/, readdir DIR; close DIR; print join ("\n",@files); foreach my $tmp (@files) {$tmp=decode("cp1251",$tmp)}; print join ("-----\n",@files); foreach my $tmp (@files) {$tmp=encode("utf8",$tmp)}; <- это уже не нужно так как use utf8! (но понятно как это работает теперь! Спасибо! print join ("111 \n",@files); Всего наилучшего, Mikhail
From: Valera Kolesnik 2:451/31 19 Feb 2019 10:53 +0200
To: Eugene Grosbein grosbein.net
Subject: +key => +value
Hello Eugene. 19 Feb 19 12:51, you wrote to me: VK>> $ perl -e 'use strict; my $h = { key => "v", -key, "w" }; print $$h{key}, VK>> $$h{-key}' VK>> vw VK>> ^^^^^ EG>>> Совершенно никакой разницы и дефис ничего не квотит. EG>>> Просто perl разрешает barewords в качестве ключей даже при use strict EG>>> и дефис на первой позиции - допустимый символ в barewords наравне с VK>> буквами. VK>> это неправильные утверждения. VK>> Unary "-" ... VK>> If the operand is an identifier, a string consisting of a minus sign VK>> concatenated with the identifier is returned. VK>> ... VK>> One effect of these rules is that "-bareword" is equivalent to the string VK>> "-bareword". VK>> что я выше и продемонстрировал убрав толстую запятую EG> Спор ни о чём, так как это полностью эквивалентные EG> в практическом смысле определения. То же можно сказать не только EG> про минус, но и про любую другую букву и это будет верно на практике. я не спорю, а поправляю. человек, начинающий знакомство с перлом запутался в одной хитрой и интересной теме и попросил прояснить. насколько эта тема интересна и хитра понятно, например, по твоему заблуждению. я только поясняю, как оно на самом деле есть. какие вещи эквивалентные? "-" специален. поэтому мы можем написать: my %h = ( -key, 'value' ); а вот так уже не можем: my %h = ( key, 'value' ); точно также с простыми строками вне инициализации хешей: my $s = -value; будет работать ($s = '-value'), а: my $s = value; не будет (Bareword "value" not allowed while "strict subs" in use at -e line 1. Execution of -e aborted due to compilation errors). и как не заменяй в этих примерах '-' на любую другую букву, работать они уже не будут. Valera
From: Eugene Grosbein grosbein.net 21 Apr 2019 19:31 +0300
To: Mikhail Stakhanov 2:5020/932.1
Subject: помогите!!!
18 апр. 2019, четверг, в 19:36 NOVT, Mikhail Stakhanov написал(а): MS> А вот это нет: MS> open RL, ">".$srif{'responselist'} or die "System error $! of writing MS> $srif{responselist}"; MS> for (my $i = 0; $i < scalar($j); $i++) { MS> chomp($files_found[$i]); MS> print RL "+$files_found[$i]\n"; MS> w_log("Found file: $files_found[$i]"); MS> } MS> close RL; MS> Поигрался с ковычками $srif{responselist}, $srif{'responselist'} и "$srif...." MS> не помогло... MS> system "echo $files_found[$i] > $srif{'responselist'}"; MS> Сделал так, тоже не помогло... MS> В ЧЕМ ПРОБЛЕМА? Так не сообщают о проблеме. Телепатов нет, какие там у тебя входные данные, какой получается результат и какого результата ты ожидал - никто не знает, так что и сказать тебе нечего. Eugene -- Однажды, будучи ещё мальчишкой, я был на каникулах и прогуливался вдоль реки. Я увидел выдру с выводком. Весьма умилительное зрелище, думаю, вы согласитесь со мной. Выдра нырнула и поймала жирного лосося, которого она с трудом выволокла на ствол полузатопленного дерева и принялась пожирать, разумеется, заживо. Из распоротого брюха лосося вывалилась икра, о, я до сих пор помню чудесный розовый цвет этих икринок, к которым тут же бросились маленькие выдры, ссорясь между собой за лакомство. Чудо природы: мать и дети, пожирающие мать и детей. Вот тогда я и познал впервые, что есть зло. Оно встроено в саму природу вселенной.