Можно ли в хэше объединить три ключа, которые указывают на одно значение?
У меня есть сомнения в следующей декларации хеша:
%metadataHash
это хеш
line 1: $metadataHash->{"name"} = $name;
line 2: $metadataHash->{"type"} = $Type;
line 3: $metadataHash->{"student"}{$file}{"math"} = "/$file";
line 4: $metadataHash->{"student"}{$file}{"phy"} = $phy;
line 5: $metadataHash->{"student"}{$file}{"chem"} = $chem;
В строке 1 и строке 2 ясно, что ключи ("имя", "тип") и значения ($name, $Type).
Но в строке 3
- мы можем иметь три ключа
{"student"}{$file}{"math"}
объединены вместе, что указывает на одно значение? - В строке 3 они объединены таким образом, что они рассматриваются как один ключ или три разных ключа?
1 ответ
Решение
$metadataHash->{"fastq"}{$file1}{"read1"}
это сокращенный синтаксис для $metadataHash->{"fastq"}->{$file1}->{"read1"}
,
Он имеет дело с хешами, где значение является ссылкой на другой хеш.
Чтобы объяснить с демонстрацией:
#!/usr/bin/perl
use strict;
use warnings;
my $foo = {};
$foo->{a}{b}{c} = 1;
use Data::Dumper;
print Dumper($foo);
дает:
$VAR1 = {
'a' => {
'b' => {
'c' => 1
}
}
};