LINUX.ORG.RU

Помогите с выводом хэша на перле


0

0

есть такой хэш, вывел его с помощью дампера...

$VAR1 = {
          'MainRecord' => [
                         {
                           'Record1' => {
                                             'Value1' => '1',
                                             'Value2' => '256',
                                             'Value3' => '4',
                                             'Value4' => '20',
                                                          
                                         }
                         }
                       ]
        }
Помогите плиз вывести его с помощью обычных средств, спасибо.



Последнее исправление: shuha (всего исправлений: 1)

Просто вывести по аналогии с Dumper хрен знает что, или вывести конкретно структуру представленного типа, предполагая то, что в контейнерах, имеющих в примере одним элемент,элементов может быть больше? Вот для обоих случаев, отступы и красивости подставьте сами.

print stringify1($VAR1)."\n";
print stringify2($VAR1)."\n";

sub stringify1 {
    my $obj = $_[0];
    if (ref $obj eq 'ARRAY') {
        return '['.join(',', map { stringify($_) } @$obj).']';
    } elsif (ref $obj eq 'HASH') {
        return '{'.join(',', map { "'$_'=>".stringify($obj->{$_}) } sort keys %$obj).'}';
    } elsif (!ref $obj) {
        return "'$obj'";
    } else {
        return "'{UNSUPPORTED REFERENCE TO ".ref($obj)."}'";
    }
}

sub stringify2 {
    my $obj = $_[0];
    my $output = '{';
    while (my ($mainrecordname, $mainrecord) = each %$obj) {
        $output .= "'$mainrecordname'=>[";
        foreach my $mainrecordelement (@$mainrecord) {
            $output .= '{';
            while (my ($recordname, $record) = each %$mainrecordelement) {
                $output .= "'$recordname'=>{";
                while (my ($itemname, $item) = each %$record) {
                    $output .= "'$itemname'=>'$item',";
                }
                $output .= "}";
            }
            $output .= '}';
        }
        $output .= "]";
    }
    $output .= '}';
    return $output;
}
slovazap ★★★★★
()

присоединяюсь. Дампер — лучший друг перловика.

dilmah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.