Не зная, что вы пытаетесь достичь, какие данные вы моделируете, все, что я могу вам помочь, это путаница с синтаксисом. Здесь есть путаница в нескольких моментах.
# You wrote
my @pizza = ($p1 = "Pizza One", $p2 = "Pizza Two" );
Это не делает то, что вы имеете в виду. Он делает массив ("Pizza One", "Pizza Two")
, но также устанавливает $p1
равным Pizza One
и $p2
равным Pizza Two
. Я думаю, что вы пытаетесь присвоить Pizza One
ключу p1
. Я думаю, что вы хотите использовать хэш / связанный массив:
# Try a hash
my %pizzas = (p1 => "Pizza One", p2 => "Pizza Two");
Теперь $pizzas{p1}
- это Pizza One
. Или просто составьте список:
# An array
my @pizzas = ("Pizza One", "Pizza Two");
А затем $pizzas[0]
равно Pizza One
. Идем дальше ...
# You wrote
my @food = (\@pizza);
Вы пытаетесь создать другой список, ссылаясь на @pizza
. Вышеприведенное делает ссылку $food[0]
на @pizza
, что вы не имеете в виду. Ссылки в Perl являются скалярами и имеют другой синтаксис.
# What you probably meant
my $food = \@pizza;
Теперь $food->[0]
равно Pizza One
, а $food->[0]
равно Pizza Two
.
# You wrote
$test = ${$food[$pizza[$p1]]};
Попахивает просто добавлением фигурных скобок, пока вы не получите вывод. Я бы порекомендовал прочитать Perl Data Structures Cookbook . Ох, и включите предупреждения. Не выключайте их, пока они не уйдут, и не выключайте их, потому что их слишком много. В самом деле. Действительно действительно.
Обновление
«Я хочу знать, что содержалось в Базе данных 2 -> Таблица 2 -> Столбец 4, каким будет утверждение?»
Не используйте цифры. Назовите их, потому что я уверен, что у них есть имена. Так что да, вы хотите хэши. Допустим, база данных Foo -> Table Bar -> Column Baz. Вы получите доступ к этому как ...
$values = $databases->{Foo}{Bar}{Baz};
или длинная рука
$tables = $databases->{Foo};
$columns = $tables->{Bar};
$values = $columns->{Baz};
Где $values
может быть ссылкой на массив всех значений Foo.Bar.Baz или другого хеша, ключом которого является первичный ключ Foo.Bar. То, что имеет больше смысла, зависит от того, что вы делаете с данными.
Я предоставлю вам возможность адаптировать ответ Чаза для создания хешей вместо массивов.
Конечно, я должен спросить, зачем выгружать все обе базы данных в большую структуру в памяти, а затем работать над ней? Если у вас есть базы данных, запросите их. Это будет быстрее и гибче.
Мы вернулись к этому основному вопросу; что ты ДЕЙСТВИТЕЛЬНО пытаешься сделать?