Можно ли в хэше объединить три ключа, которые указывают на одно значение?

У меня есть сомнения в следующей декларации хеша:

%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
                          }
                 }
        };
Другие вопросы по тегам