powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как правильно работать с хешем в Perl
9 сообщений из 9, страница 1 из 1
Как правильно работать с хешем в Perl
    #37960643
weare
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Подскажите, как правильно использовать хеш? Почему так получается? Заранее благодарен.
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
$Hash{A} = 1;
$Hash{B} = 1;

print " before\n";
print "-- A:" . $Hash{A}{key} . "\n" if exists $Hash{A}{key};
print "-- B:" . $Hash{B}{key} . "\n" if exists $Hash{B}{key};

$Hash{B}{key} = 2;

print " after\n";
print "-- A:" . $Hash{A}{key} . "\n" if exists $Hash{A}{key};
print "-- B:" . $Hash{B}{key} . "\n" if exists $Hash{B}{key};



Получаем:
Код: python
1.
2.
3.
4.
before
after
-- A:2
-- B:2
...
Рейтинг: 0 / 0
Как правильно работать с хешем в Perl
    #37960967
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.... почему так получилось? потому что в хэш к единице под ключем
'key'
впихнуто значение 2.
(наверное)
одна и та же единица будет лежать при присваиваниях в строчках 1-2 или разные - я по стандарту языка не могу сказать, гарантирует он это, или нет.
а вот что это за единица.... сама по себе как таковая, или переменная с именем '1' в глобальном пространстве имен? я тоже пожалуй не берусь сказать. если ссыль на глобальное пр-во имен - тогда понятно

А что собственно говоря хочется? ))))
...
Рейтинг: 0 / 0
Как правильно работать с хешем в Perl
    #37961457
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
$Hash{A} = 1; - это вы записали скалярное значение в хеш, а потом пытаетесь использовать его как ссылку на массив :
if exists $Hash{A}{key}

Если бы не забыли, что второй строчкой любой программы на perl должна быть "use strict;", то вывелось бы сообщение :
Can't use string ("1") as a HASH ref while "strict refs",
натолкнувшее бы на эту мысль.


К счастью, в хеш можно поместить ссылку на хеш:
# самый очевидный и предсказуемый java-стайл :
my %h = ( key => 1);
$Hash{'A'}=\%h;

# или сразу ссылку на анонимный хеш :

$Hash{'B'}= { key => 1 };

# или просто попытаться использовать хеш хешей и он тоже создастся (это совсем по-нашему по-бразильски):
$Hash{'B'}{'key'}=1;
...
Рейтинг: 0 / 0
Как правильно работать с хешем в Perl
    #37961912
weare
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netwindЕсли бы не забыли, что второй строчкой любой программы на perl должна быть "use strict;", то вывелось бы сообщение :
Can't use string ("1") as a HASH ref while "strict refs",
натолкнувшее бы на эту мысль.

Спасибо! Понял свою ошибку)
...
Рейтинг: 0 / 0
Как правильно работать с хешем в Perl
    #37962037
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindЕсли бы не забыли, что второй строчкой любой программы на perl должна быть "use strict;"В общем случае это заблуждение, но в частности - истина.
...
Рейтинг: 0 / 0
Как правильно работать с хешем в Perl
    #37962059
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Warstone, это МУДРАСЦЬ ВЕКОВ!
...
Рейтинг: 0 / 0
Как правильно работать с хешем в Perl
    #37962063
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну а первой строчкой !#/usr/bin/perl конечно же.
...
Рейтинг: 0 / 0
Как правильно работать с хешем в Perl
    #37962737
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindWarstone, это МУДРАСЦЬ ВЕКОВ!Тогда третья должна быть use warnings;
...
Рейтинг: 0 / 0
Как правильно работать с хешем в Perl
    #37962743
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarstonenetwindWarstone, это МУДРАСЦЬ ВЕКОВ!Тогда третья должна быть use warnings;А 4-я - use Data::Dumper;
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как правильно работать с хешем в Perl
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]