Основная проблема получения массива или строки из файла с помощью Storable retrieve

Проблема очень простая, но я не могу ее найти:

Я храню $string к $filename:

store [$tempstring], $filename2[$m];

Затем я пытаюсь получить его:

my $tempinput = retrieve ($filename2[$m]);

Мне кажется, я просто получаю ссылку, а не строку? Могу ли я использовать команду для преобразования данных обратно в исходную строку?

1 ответ

Решение
 my $ref = [ $tempstring ];

создает массив, присваивает $tempstring к нему (помещая его в первый элемент), затем возвращает ссылку на этот массив.

Поэтому, если вы хотите вернуть строку назад, вам нужно получить значение первого элемента массива, на который есть ссылка.

 $ref->[0]

Если бы вы сделали

 my $ref = \$tempstring;

вместо ненужного создания массива, вы просто

 $$ref

чтобы получить строку.

Другие вопросы по тегам