Рад всех приветствовать! А особенно - Eugene!
Суббота апреля 25 20 05:47 Eugene Grosbein писал к Gennadij Pastuhov:
GP>> Дано: хэш:
GP>> my $PRODUCTS = {
GP>> ssl_dv_geotrust => 'GeoTrust Standard DV SSL Certificate',
GP>> ssl_dv_rapidssl => 'RapidSSL Standard DV SSL Certificate',
GP>> ssl_dv_thawte => 'Thawte SSL123 DV',
GP>> };
GP>> Кусок кода:
GP>> for my $key (keys $result) {
GP>> print "\nkey:" . Dumper $key;
GP>> my ($product_name_id, $validity_years) = split
GP>> '__', $key;
GP>> print
GP>> "\nproduct_name_id:'$product_name_id'\tvalidity_years:'$validity_
EG> years'";
GP>> if (defined $PRODUCTS->{$product_name_id}) {
GP>> ...
GP>> } else {
GP>> print "\nproduct_name_id:$product_name_id -- not found";
GP>> print "\nPRODUCTS:" . Dumper $PRODUCTS->{$product_name_id};
GP>> В $result хранится результат разjsonивания запроса. И этот код
GP>> порождает такой
GP>> лог:
GP>> key:$VAR1 = 'ssl_dv_thawte__2';
GP>> product_name_id:'ssl_dv_thawte' validity_years:'2'
GP>> product_name_id:ssl_dv_thawte -- not found
GP>> PRODUCTS:$VAR1 = undef;
GP>> Даже не представляю, куда копать. Если взять вот эти тексты и
GP>> выполнить в
GP>> скрипте, то всё работает. Т.е., как будто эти латинские буквы в
GP>> работе какие-то
GP>> не те. Или меня глючит?
EG> Вообще удивляюсь, что у тебя хоть что-то печатает,
EG> потому что вызов keys $result некорректен и ты,
EG> очевидно, не используешь use strict и use warnings,
EG> которые обязательно нужно всегда использовать.
EG> keys берёт аргументом хеш или список, а у тебя скаляр.
EG> Добавляй use strict и use warnings, исправляй все ошибки
EG> в коде, на которые они укажут и пробуй снова.
Начало того скрипта:
use strict;
use warnings;
use utf8;
... Jonny wanna live