Я пытаюсь создать хэш, который извлекает пары ключ/значение из отдельного текстового файла на моем сервере.
Когда я вручную ввожу пары ключ/значение в хэш внутри моего Perl-скрипта, как в приведенном ниже примере, хеш отлично работает, когда я вызываю его позже:
# Initialize hash
my %format_key = ('SGBK', 'PRINT', 'SGDVD', 'VIDEO');
# Call hash (this is much later in the program)
$item_format = $format_key{$fields[2]};
Когда я сохраняю те же самые аргументы в текстовый файл, а затем читаю в этом файле, сохраняю содержимое в скалярную переменную и назначаю эту переменную аргументам в хеше, хэш не работает. Вот что я сделал:
# Open file path saved in $format_key_file and save contents to $output
open(my $fh, '<', $format_key_file) or die "Could not read from $format_key_file, program halting."; {
local $/;
$output = <$fh>;
}
close($fh);
my %format_key = $output;
# Call hash (this is much later in the program)
$item_format = $format_key{$fields[2]};
Я совершенно озадачен. Я полагаю, что могу просто вручную ввести все мои хэш-аргументы в сам сценарий, но их будет много, и я бы предпочел сохранить их в файле для облегчения обновления в будущем.