#3921From:Stas Mishchenkov
To:Gennadij Pastuhov
Date:18-10-2020 10:57:21
Subj:мозги сломал
Hi, Gennadij!

17 окт 20 16:50, Gennadij Pastuhov -> Stas Mishchenkov:

SM>> use locale;
SM>> # [...]
SM>> undef $fromchrs;
SM>> if ( $Text =~ /\001CHRS\:[ ]*([^ ]+)[ ]+\d+/ ) {

GP> Может, тут лучше так: \s* \s+

Можно и так, но рекэксп-то срабатывает, только в $1 попадает то, чего в тексте вообще нет.

Have nice nights.
Stas Mishchenkov.

--- Мудрость - это когда ты всё понимаешь, но уже не огорчаешься.
* Origin: Lame Users Breeding. Simferopol, Crimea. (2:460/5858)
SEEN-BY: 460/58 5858 5020/545 1042 4441 6090/1
PATH: 460/5858 58 5020/545 4441 1042 6090/1
#3922From:Stas Mishchenkov
To:Alexey Korotkov
Date:18-10-2020 11:01:20
Subj:мозги сломал
Hi, Alexey!

17 окт 20 22:50, Alexey Korotkov -> Stas Mishchenkov:

SM>> Текст письма содержит кладж "@CHRS: UTF-8 4", но $1 и $fromchrs
SM>> устанавливается CP866. Другие кладжи рспознает, правда, я не проверял,
SM>> все ли. При чем, в данном конкретном случае текст вообще не содержит
SM>> строки CP866. В чем прикол, откуда оно может браться?

AK> А ты уверен что у тебя в строке фактические разделители - проблелы? (см.
AK> в hex-виде)

Посмотрю, конечно, но почему тогда рекэксп срабатывает? Вопрос именн в том, что регэксп возвращает тру, а в $1 то, чего в тексте вообще нет. Если $1 остается установлен с прошлого срабатывания, то куда девается значение из скобок?

Have nice nights.
Stas Mishchenkov.

--- На кашу в голове хорошо бегут тараканы.
* Origin: Lame Users Breeding. Simferopol, Crimea. (2:460/5858)
SEEN-BY: 460/58 5858 5020/545 1042 4441 6090/1
PATH: 460/5858 58 5020/545 4441 1042 6090/1
#3923From:Gennadij Pastuhov
To:Stas Mishchenkov
Date:18-10-2020 15:44:13
Subj:мозги сломал
Рад всех приветствовать! А особенно - Stas!

Воскресенье октября 18 20 10:57 Stas Mishchenkov писал к Gennadij Pastuhov:

SM>>> use locale;
SM>>> # [...]
SM>>> undef $fromchrs;
SM>>> if ( $Text =~ /\001CHRS\:[ ]*([^ ]+)[ ]+\d+/ ) {

GP>> Может, тут лучше так: \s* \s+

SM> Можно и так, но рекэксп-то срабатывает, только в $1 попадает то, чего
SM> в тексте вообще нет.

Ты уеврен, что он срабатывает? Может, ветка else? Давай сюда построчные логи.

... Jonny wanna live
--- GoldED+/W32 1.1.5-041013 xenofont.chat.ru skype pastuhovgena
* Origin: Hичего на свете лучше нету, чем сидеть за компом до pасс (2:5036/26)
SEEN-BY: 5020/1042 5036/26 6090/1
PATH: 5036/26 5020/1042 6090/1
#3924From:Eugene Grosbein
To:Stas Mishchenkov
Date:22-10-2020 12:12:27
Subj:Re: мозги сломал
17 окт. 2020, суббота, в 11:15 NOVT, Stas Mishchenkov написал(а):

SM> use locale;
SM> # [...]
SM> undef $fromchrs;
SM> if ( $Text =~ /\001CHRS\:[ ]*([^ ]+)[ ]+\d+/ ) {
SM> $fromchrs = lc($1);
SM> writelog("Charset found: \'$fromchrs\'.");
SM> } else {
SM> $fromchrs = 'cp866';
SM> writelog('Warning: No @CHRS kludge. Using default
SM> }

Это не тот код, который реально работает. Этот содержит ошибки и
даже не запустится.

Кроме того, undef лишний. Отдельный пробел незачем забирать в квадратные скобки.
Двоеточие незачем экранировать. Hе отмечено, что матчинг должен идти
с начала строки. Попробуй так:

if ($Text =~ /^.CHRS:\s*([^ ]+)\s+\d+/) {

Eugene
--- slrn/1.0.3 (FreeBSD)
* Origin: RDTC JSC (2:5006/1@fidonet)
SEEN-BY: 5006/1 5020/1042 5080/102 6090/1
PATH: 5006/1 5080/102 5020/1042 6090/1