Perl hash не читается из param()

Я не могу заставить perl прочитать хэш-ключ, который был передан ему из param().

это не работает.

append_file('pending_entries.txt',$spanish_url{param('venue')});

ни это,

my $var = $spanish_url{param('venues')};
append_file( 'pending_entries.txt', $var ) ;

ни это

my $ven = param('venue');
my $var = $spanish_url{$ven};
append_file( 'pending_entries.txt', $var ) ;

но это так.

append_file('pending_entries.txt',$spanish_url{'key'});

пожалуйста помоги.


person user1928687    schedule 25.12.2012    source источник
comment
Вы ничего не сказали о том, что является %spanish_url и что исключено из param('venue'). Бьюсь об заклад, вы просто как-то не получаете параметр.   -  person PSIAlt    schedule 26.12.2012
comment
Убедитесь, что вы проверили значение param('venues') в отладчике. Это можно сделать с помощью команды x в отладчике.   -  person Horus    schedule 26.12.2012


Ответы (1)


Вы пытались напечатать значение в параметре, чтобы увидеть, что это такое? Хэш-ключи должны быть точными. Вероятно, у вас есть что-то вроде key\n или Key в вашем параметре. Модуль Data::Dumper (основной модуль в Perl 5) очень хорош для такой отладки. Например.:

use Data::Dumper;
$Data::Dumper::Useqq = 1;
print Dumper param('venue');
person TLP    schedule 25.12.2012
comment
Я попытался напечатать param('venue') сам по себе, и он выводит правильное значение. «место проведения» — это popup_menu, значения которого берутся из файла .txt. я использовал chomp для значений, взятых из этого файла, поэтому я не думаю, что это случайная новая строка. Я попробовал совет TLP и получил $VAR1 = undef;, что заставляет меня думать, что это связано с тем, как я присваиваю значения хешу. - person user1928687; 26.12.2012
comment
Что ж, теперь вы знаете, как его отлаживать. Мне трудно сказать, что вы делаете неправильно, не видя кода. - person TLP; 26.12.2012