您如何访问 Tie::IxHash 键?
How do you access Tie::IxHash keys?
您好 我需要从嵌套的 perl 哈希生成一个 xml 文档,并保持哈希键的顺序。我正在尝试 https://metacpan.org/pod/Tie::IxHash
为了保持钥匙的秩序部分。
但是我不知道如何访问 Tie::IxHash 创建的散列键,它们的行为不像散列键、散列引用键或对象。
在示例代码中,我创建了一个 Tie::IxHash 并尝试打印密钥 Transmitter
这是示例代码:
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";
您可以使用Indices()
方法获取键的索引,然后使用Values()
方法获取该键的值:
my $idx = $transmissionHeader->Indices('Transmitter');
my $hash = $transmissionHeader->Values($idx);
print Dumper $hash;
您好 我需要从嵌套的 perl 哈希生成一个 xml 文档,并保持哈希键的顺序。我正在尝试 https://metacpan.org/pod/Tie::IxHash 为了保持钥匙的秩序部分。 但是我不知道如何访问 Tie::IxHash 创建的散列键,它们的行为不像散列键、散列引用键或对象。 在示例代码中,我创建了一个 Tie::IxHash 并尝试打印密钥 Transmitter 这是示例代码:
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";
您可以使用Indices()
方法获取键的索引,然后使用Values()
方法获取该键的值:
my $idx = $transmissionHeader->Indices('Transmitter');
my $hash = $transmissionHeader->Values($idx);
print Dumper $hash;