#perl
#perl
Вопрос:
Приветствую, мне нужно сгенерировать XML-документ из вложенного хэша perl, сохраняя порядок хэш-ключей. Я пытаюсь https://metacpan.org/pod/Tie::IxHash для части, касающейся хранения ключей в порядке. Однако я не могу понять, как получить доступ к хэш-ключам, которые создает Tie ::IxHash, они не ведут себя как хэш-ключ, хэш-ключ или объект. В примере кода я создаю Tie::IxHash и пытаюсь распечатать передатчик ключа Вот пример кода:
use strict;
use warnings;
use diagnostics;
use Scalar::Util;
use Data::Dumper;
use XML::Writer;
use Tie::IxHash;
use DateTime::Format::XSD;
my $time = time;
my $dt = DateTime->now;
my $timestamp = DateTime::Format::XSD->format_datetime($dt);
my $transmissionId = sprintf("%u",int(rand(100000000000000000000))). "E";
#sample data structure as hsah ref
# my $transmissionHeader = {
# TransmissionId => "$transmissionId",
# Timestamp => "$timestamp",
# Transmitter => {
# ETIN => '1232456789',
# SOME => '5555555555',
# }
# };
my $transmissionHeader = Tie::IxHash->new(
TransmissionId => "$transmissionId",
Timestamp => "$timestamp",
Transmitter => Tie::IxHash->new( #each nested hash a new object?
ETIN => '1232456789',
SOME => '5555555555',
),
);
print Dumper $transmissionHeader;
# tried all these no joy
print "$transmissionHeader{Transmitter} n";
print "$transmissionHeader->{Transmitter} n";
print "$transmissionHeader->Transmitter() n";
Ответ №1:
Вы можете использовать Indices()
метод для получения индекса ключа, а затем использовать Values()
метод для получения значения этого ключа:
my $idx = $transmissionHeader->Indices('Transmitter');
my $hash = $transmissionHeader->Values($idx);
print Dumper $hash;
Комментарии:
1. Спасибо, это помогает, хотя я надеялся на что-то, что не было двухэтапным процессом.