|
|
|
Как правильно работать с хешем в Perl
|
|||
|---|---|---|---|
|
#18+
Добрый день! Подскажите, как правильно использовать хеш? Почему так получается? Заранее благодарен. Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Получаем: Код: python 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2012, 15:56:39 |
|
||
|
Как правильно работать с хешем в Perl
|
|||
|---|---|---|---|
|
#18+
.... почему так получилось? потому что в хэш к единице под ключем 'key' впихнуто значение 2. (наверное) одна и та же единица будет лежать при присваиваниях в строчках 1-2 или разные - я по стандарту языка не могу сказать, гарантирует он это, или нет. а вот что это за единица.... сама по себе как таковая, или переменная с именем '1' в глобальном пространстве имен? я тоже пожалуй не берусь сказать. если ссыль на глобальное пр-во имен - тогда понятно А что собственно говоря хочется? )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2012, 18:12:50 |
|
||
|
Как правильно работать с хешем в Perl
|
|||
|---|---|---|---|
|
#18+
$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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2012, 02:06:51 |
|
||
|
Как правильно работать с хешем в Perl
|
|||
|---|---|---|---|
|
#18+
netwindЕсли бы не забыли, что второй строчкой любой программы на perl должна быть "use strict;", то вывелось бы сообщение : Can't use string ("1") as a HASH ref while "strict refs", натолкнувшее бы на эту мысль. Спасибо! Понял свою ошибку) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2012, 12:04:44 |
|
||
|
Как правильно работать с хешем в Perl
|
|||
|---|---|---|---|
|
#18+
netwindЕсли бы не забыли, что второй строчкой любой программы на perl должна быть "use strict;"В общем случае это заблуждение, но в частности - истина. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2012, 12:47:46 |
|
||
|
Как правильно работать с хешем в Perl
|
|||
|---|---|---|---|
|
#18+
Warstone, это МУДРАСЦЬ ВЕКОВ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2012, 12:55:31 |
|
||
|
Как правильно работать с хешем в Perl
|
|||
|---|---|---|---|
|
#18+
ну а первой строчкой !#/usr/bin/perl конечно же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2012, 12:56:04 |
|
||
|
Как правильно работать с хешем в Perl
|
|||
|---|---|---|---|
|
#18+
netwindWarstone, это МУДРАСЦЬ ВЕКОВ!Тогда третья должна быть use warnings; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2012, 17:39:19 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=37962063&tid=1464689]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
261ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 574ms |

| 0 / 0 |
