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
--
Однажды, будучи ещё мальчишкой, я был на каникулах и прогуливался вдоль реки.
Я увидел выдру с выводком. Весьма умилительное зрелище, думаю, вы согласитесь
со мной. Выдра нырнула и поймала жирного лосося, которого она с трудом
выволокла на ствол полузатопленного дерева и принялась пожирать, разумеется,
заживо. Из распоротого брюха лосося вывалилась икра, о, я до сих пор помню
чудесный розовый цвет этих икринок, к которым тут же бросились маленькие выдры,
ссорясь между собой за лакомство. Чудо природы: мать и дети, пожирающие
мать и детей. Вот тогда я и познал впервые, что есть зло. Оно встроено в саму
природу вселенной.