我想将数据从德国数据结构映射到英语数据结构。
为此,我使用一个哈希,它将德语单词保存为键,将英语单词保存为值($ mapping_table)。
数据存储在哈希数组($ data)中。键是德语单词,必须由英语单词替换。值是保持不变的数据。
为了进行映射,我编写了以下代码:
my $mapping_table = {
'Exemplare' => 'copies',
'Seiten' => 'pages',
'Statushinweis' => 'status',
'Serie von' => 'number_of',
'ISBN/Barcode-Nr.' => 'ISBN_barcode',
'Status' => 'status',
};
my $data = [
{
'Exemplare' => '1',
'Seiten' => '0',
'Statushinweis' => 'Statushinweis',
'ISBN/Barcode-Nr.' => '3-551-01561-9',
'Serie von' => '4',
'Status' => 'Gesucht'
},
{
'Exemplare' => '4',
'Seiten' => '111',
'Statushinweis' => '',
'ISBN/Barcode-Nr.' => '3-551-01561-9',
'Serie von' => '4',
'Status' => 'Vorhanden'
}
];
my $mapped_data = [];
foreach my $issue ( @$data ) {
my %tmp_hash;
foreach my $key (sort keys %$mapping_table) {
$tmp_hash{$mapping_table->{$key}} = $issue->{$key};
}
push @$mapped_data, \%tmp_hash;
}
print Dumper $mapped_data;
转储的结果给我带来了很多惊喜。
$VAR1 = [
{
'number_of' => '4',
'copies' => '1',
'status' => 'Statushinweis',
'ISBN_barcode' => '3-551-01561-9',
'pages' => '0'
},
{
'pages' => '111',
'ISBN_barcode' => '3-551-01561-9',
'status' => '',
'copies' => '4',
'number_of' => '4'
}
];
可以看出键的状态'状态'持有那些钥匙' Statushinweis'而这些钥匙完全丢失了。
我试图弄清楚为什么会在Google和调试器的帮助下发生这种情况但却失败了(可能很明显可见?)。
也许我应该提一下,我在Win7上使用草莓perl 5.26.1。
知道我做错了什么以及如何解决它?
提前谢谢。