#3691From:Gennadij Pastuhov
To:All
Date:28-01-2019 16:17:13
Subj:+key => +value
Рад всех приветствовать! А особенно - All!

Иногда встречаю в коде выражения вида:
{
-key => "value",
}
или
{
response => '+response',
}

В доке что-то не могу найти, как это понимать. Помогите, плз!

... Jonny wanna live
--- GoldED+/W32 1.1.5-041013 xenofont.chat.ru skype pastuhovgena
* Origin: ... са. Это ориджин Мёбиуса. Это ориджин Мёбиу ... (2:5036/26)
SEEN-BY: 5020/1042 5036/26 6090/1
PATH: 5036/26 5020/1042 6090/1
#3692From:Gennadij Pastuhov
To:All
Date:28-01-2019 16:44:08
Subj:+key => +value
Рад всех приветствовать! А особенно - All!

Иногда встречаю в коде выражения вида:
{
-key => "value",
}

upd:
или
{
response => '+response',
}
С этим разобрался, просто строка :) А вот минус в ключе - пока загадка.

... Jonny wanna live
--- GoldED+/W32 1.1.5-041013 xenofont.chat.ru skype pastuhovgena
* Origin: ... са. Это ориджин Мёбиуса. Это ориджин Мёбиу ... (2:5036/26)
SEEN-BY: 5020/1042 5036/26 6090/1
PATH: 5036/26 5020/1042 6090/1
#3693From:Eugene Grosbein
To:Gennadij Pastuhov
Date:28-01-2019 23:12:02
Subj:Re: +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
--- 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
#3694From:Gennadij Pastuhov
To:All
Date:30-01-2019 16:33:26
Subj:hash, продолжение
Рад всех приветствовать! А особенно - All!

Встретил сегодня такую конструкцию:

my $handler = {
owner_changed => 'process_owner_changed',
changed => 'process_changed',
created => 'process_created',
}->{$event};

Здесь что, внутренний массив является ключом хэша?

... Jonny wanna live
--- GoldED+/W32 1.1.5-041013 xenofont.chat.ru skype pastuhovgena
* Origin: Тяжело в лечении - легко в гробу (2:5036/26)
SEEN-BY: 5020/1042 5036/26 6090/1
PATH: 5036/26 5020/1042 6090/1
#3695From:Eugene Grosbein
To:Gennadij Pastuhov
Date:30-01-2019 21:08:08
Subj:Re: hash, продолжение
30 янв. 2019, среда, в 16:33 NOVT, Gennadij Pastuhov написал(а):

GP> Встретил сегодня такую конструкцию:
GP> my $handler = {
GP> owner_changed => 'process_owner_changed',
GP> changed => 'process_changed',
GP> created => 'process_created',
GP> }->{$event};
GP> Здесь что, внутренний массив является ключом хэша?

Hет. Фигурные скобки означают определение ссылки на анонимный хеш.
Оператор -> в данном случае означает выборку значения из этого
анонимного хеша по ссылке на него и по ключу $event.
То есть, это краткая запись такой конструкции:

my $handler;
if ($event eq 'owner_changed') { $handler = 'process_owner_changed'; }
elsif ($event eq 'changed') { $handler = 'process_changed'; }
elsif ($event eq 'created') { $handler = 'process_created'; }

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
#3696From:Gennadij Pastuhov
To:Eugene Grosbein
Date:30-01-2019 18:30:00
Subj:hash, продолжение
Рад всех приветствовать! А особенно - Eugene!

Среда января 30 19 21:08 Eugene Grosbein писал к Gennadij Pastuhov:

EG> Оператор -> в данном случае означает выборку значения из этого
EG> анонимного хеша

Огромное спасибо!

... Jonny wanna live
--- GoldED+/W32 1.1.5-041013 xenofont.chat.ru skype pastuhovgena
* Origin: Топ - топ - топ - топ. Чёрные лапки!!!! (2:5036/26)
SEEN-BY: 5020/1042 5036/26 6090/1
PATH: 5036/26 5020/1042 6090/1
#3697From:Gennadij Pastuhov
To:All
Date:13-02-2019 11:04:23
Subj:perl strings & Encode::encode
Рад всех приветствовать! А особенно - All!

Поясните, плз, видимо, я чего-то не до конца понимаю.

my $str = "некая строка";
В $str имеем строку во внутреннем перловом формате. Соответственно, все языковые средства должны работать с ней корректно. Но строка имеет "старую" однобайтовую кодировку.

use utf8;
my $str = "некая строка";
$str опять во внутреннем формате, но может содержать уникодные символы. Все языковые средства опять должны работать корректно?

my $str = Encode::encode_utf8("некая строка");
Теперь $str хранит строку с BOM, каждый символ закодирован уникодными кодовыми позициями? И языковые средства тут хз как отработают?

... Jonny wanna live
--- GoldED+/W32 1.1.5-041013 xenofont.chat.ru skype pastuhovgena
* Origin: Чёрнaя дырa - труднодоступнaя aфрикaнскaя провинция (2:5036/26)
SEEN-BY: 5020/1042 5036/26 6090/1
PATH: 5036/26 5020/1042 6090/1
#3698From:Eugene Grosbein
To:Gennadij Pastuhov
Date:13-02-2019 15:51:00
Subj:Re: perl strings & Encode::encode
13 февр. 2019, среда, в 11:04 NOVT, Gennadij Pastuhov написал(а):

GP> Поясните, плз, видимо, я чего-то не до конца понимаю.
GP> my $str = "некая строка";
GP> В $str имеем строку во внутреннем перловом формате. Соответственно, все
GP> языковые средства должны работать с ней корректно. Hо строка имеет "старую"
GP> однобайтовую кодировку.

Понятие "однобайтная кодировка" неприменимо к внутреннему перловому
представлению данных (включая строковые). Это термин для "внешних"
источников данных по отношению к внутренней перловой кухне,
причём к "внешним источникам" относится и сам текст перлового кода,
который обрабатывается интерпретатором.

GP> use utf8;
GP> my $str = "некая строка";
GP> $str опять во внутреннем формате, но может содержать уникодные символы. Все
GP> языковые средства опять должны работать корректно?

После use utf8 интерпретатор при обработке текста программы предполагает
и допускает использование utf8 и конвертирует встреченный utf8
в своё внутреннее представление соответственно. Если utf8 изначально
корректный, то да - средства должны работать корректно.

GP> my $str = Encode::encode_utf8("некая строка");
GP> Теперь $str хранит строку с BOM, каждый символ закодирован уникодными кодовыми
GP> позициями? И языковые средства тут хз как отработают?

Encode::encode_utf8 просто конвертор из внутреннего перловского
представления данных во "внешнюю" кодировку utf8, $str тут
предназначается, например, для записи в html или текстовый документ или
выдачи в терминал, который настроен для работы с utf8, или для отправки
в сетевой сокет строки в формате utf8 и так далее - в общем,
для работы с "внешним миром", а не для продолжения
использования $str как текстовой перловской переменной - для
этого её придётся сначала конвертировать обратно во внутреннее
перловское представление.

Сам литерал "некая строка" неявно конвертируется во внутренне
перловское представление для строк интерпретатором перед
началом работы скрипта.

Eugene
--
What would you do with a brain if you had one?
--- 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
#3699From:Gennadij Pastuhov
To:Eugene Grosbein
Date:13-02-2019 12:10:07
Subj:perl strings & Encode::encode
Рад всех приветствовать! А особенно - Eugene!

Среда февраля 13 19 15:51 Eugene Grosbein писал к Gennadij Pastuhov:

EG> Eugene
[ сожрали демоны ]

Огромное спасибо!

... Jonny wanna live
--- GoldED+/W32 1.1.5-041013 xenofont.chat.ru skype pastuhovgena
* Origin: Кто хочет быть счастлив - тот и будь! (с) Лоренцо Медичи (2:5036/26)
SEEN-BY: 5020/1042 5036/26 6090/1
PATH: 5036/26 5020/1042 6090/1
Выделенный сервер за 149 руб!