Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Неверный результат вывода хеша


Автор: worsvch 25.11.2013, 12:45
Есть скрипт на perl, очень смутил результат вывода. Подскажите, почему такой результат?
Код

#!/perl

use strict;
use warnings;
use Data::Dumper;

my %lines = (
     first => (
        1 => 'a',
        2 => 'b',
        3 => 'c'
    ),
     second => (
        4 => 'd',
        5 => 'e',
        6 => 'f'
    )
);

my $line = \%lines;

print Dumper($line);


Результат вывода:

Код

$VAR1 = {
          '6' => 'f',
          '4' => 'd',
          'c' => 'second',
          'first' => 1,
          'a' => 2,
          'b' => 3,
          '5' => 'e'
        };

Автор: ginnie 25.11.2013, 13:13
worsvch, тут все просто:
Код

first => (
        1 => 'a',
        2 => 'b',
        3 => 'c'
    ),
     second => (
        4 => 'd',
        5 => 'e',
        6 => 'f'
    )

трактуется как список ('first',1,'a',2,'b'...) и преобразуется в хэш. То, что Вы хотите, записывается так:
Код

my %lines = (
     first => {
        1 => 'a',
        2 => 'b',
        3 => 'c'
    },
     second => {
        4 => 'd',
        5 => 'e',
        6 => 'f'
    }
);

Автор: worsvch 25.11.2013, 13:33
Цитата(ginnie @ 25.11.2013,  13:13)
worsvch, тут все просто:
Код

first => (
        1 => 'a',
        2 => 'b',
        3 => 'c'
    ),
     second => (
        4 => 'd',
        5 => 'e',
        6 => 'f'
    )

трактуется как список ('first',1,'a',2,'b'...) и преобразуется в хэш. То, что Вы хотите, записывается так:
Код

my %lines = (
     first => {
        1 => 'a',
        2 => 'b',
        3 => 'c'
    },
     second => {
        4 => 'd',
        5 => 'e',
        6 => 'f'
    }
);

Спасибо, теперь правильно

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)