Я только начинаю изучать Perl и должен выполнить упражнение, содержащее ссылки.
Мне нужно создать программу, которая создает список с двумя двусторонними ссылками, которые принимаются в качестве аргументов командной строки. В начале программы в списке есть только один элемент - 0. Для просмотра списка используется ссылка, которая на данный момент ссылается на единственный элемент списка - 0. Аргументы командной строки читаются один за другим и добавляются сразу за элементом, на который ссылается. Когда добавляется один аргумент, ссылка сдвигает один элемент вправо (он ссылается на вновь добавленный элемент). Есть также два специальных элемента - + и -. + позволяет ссылке перемещать один элемент вправо, и - один элемент влево. Кроме того, важно, чтобы ссылка не выходила за пределы списка.
Вывод всех аргументов в правильном порядке списка.
Дополнительные требования заключаются в том, что список должен быть создан с использованием хэшей, которые содержат ссылки на соседние элементы. Также я не могу использовать массивы для хранения всего списка.
Есть несколько примеров, чтобы упростить понимание концепции, это самый полезный:
. / 3.pl A D - B C + E
0 A B C D E
Все, что у меня сейчас есть, - это только начало программы, она еще далеко не готова и не компилируется, но я не могу понять, куда идти дальше. Я пытался найти некоторую информацию о двусторонних ссылках (я не уверен, правильно ли я ее перевожу), но, похоже, ничего не могу найти. Будем весьма благодарны за любую информацию о двусторонних ссылках или советы, как правильно начать писать эту программу.
Мой код:
#!/usr/bin/perl
use strict;
use warnings;
my $A= {
value=>'0',
prev=>'undef',
next=>'$B'
};
my $B= {
value=>'0',
prev=>'$A',
next=>'$C'
};
my $C= {
value=>'0',
prev=>'$B',
next=>'undef'
};
for my $smbl(0..#$ARGV) {
$A-> {value} = $ARGV[$smbl];
$Α-> {next} = $ARGV[$smbl+1];
}