2015-01-27 4 views
1
my %cellHash 

имеет разные ключи, $ cellDirectory содержит значение нужной клавиши.Построение хеша хешей массивов с переменными в perl?

Я пытаюсь назначить хэш как значение текущего ключа ($cellDirectory). Этот хэш имеет только 2 клавиши, и каждый из них имеет различный массив в качестве значения.

%{ $cellHash{$cellDirectory} } = (
'R1Tests' => \@fastqcResults_R1 ; 
'R2Tests' => \@fastqcResults_R2 ; 
); 

Однако, когда я пытаюсь запустить скрипт, он возвращает синтаксическую ошибку рядом с этой частью кода.

Я не знаю, что я делаю неправильно ... любые идеи?

+0

может помочь, если вы показать ошибку синтаксиса –

+0

Также $ cellhash {$ celldirectiry} может удерживать только скейлер, поэтому удалите% {} из него, а затем замените фигурные скобки() на фигурные скобки {} с правой стороны, чтобы выделить хеш-ссылку на scaller –

+0

. уверен в этом? Npw Я запутался ... – gaelgarcia

ответ

6

Проблема с точкой с запятой в списке.

%{ $cellHash{$cellDirectory} } = (
    R1Tests => \@fastqcResults_R1, 
    R2Tests => \@fastqcResults_R2, 
); 

Update:

В ответ на вопрос в комментарии, это то, что я хотел бы сделать вместо этого.

анонимный хэш синтаксис (ссылка буквальная) будет моим первым выбором:

$cellHash{$cellDirectory} = { 
    R1Tests => \@fastqcResults_R1, 
    R2Tests => \@fastqcResults_R2, 
}; 

Это также справедливо, хотя мне нравится меньше:

my %newHash = (
    R1Tests => \@fastqcResults_R1, 
    R2Tests => \@fastqcResults_R2, 
); 

$cellHash{$cellDirectory} = \%newHash; 
+0

Спасибо, Мэтт! Являются ли фигурные скобки и% вокруг $ cellHash {$ cellDirectory} правильным синтаксисом? Комментарий в моем сообщении выше меня сомневается. – gaelgarcia

+1

Технически, это правильно, но на практике вы бы не видели его очень часто. Вместо того, чтобы разыменовывать с левой стороны, я бы, вероятно, назначил непосредственно хеш-ссылку с правой стороны. ИМО, это более прямо и понятно. –

+0

На что это похоже? – gaelgarcia

Смежные вопросы