Эквивалентны ли @{$list_ref} и @$list_ref в Perl?
-
18-09-2019 - |
Вопрос
Я новичок в Perl, и мне интересно, @{$list_ref}
и @$list_ref
совершенно эквивалентны.
Кажется, они взаимозаменяемы, но я нервничаю, что происходит что-то тонкое, что я могу упустить.
Решение
Да, они эквивалентны.Вам нужны фигурные скобки, когда выражение представляет собой нечто большее, чем простая скалярная переменная. например,
push @{ $foo{$bar} } => "baz";
Более подробную информацию см. Использование ссылок раздел документация по ссылкам.Стандартная документация Perl также включает несколько руководств по использованию ссылок:
- Разберитесь со ссылками сегодня (упоминается Хоббс в комментариях к вопросу)
- Манипулирование массивами массивов в Perl
- Справочник по структурам данных Perl
Другие советы
Мне всегда было полезно помнить, что внешние фигурные скобки — это не синтаксическая магия, а просто блок, возвращающий ссылку.Выражение внутри блока может быть любым, возвращающим ссылку:
$ perl -le 'sub foo {[qw/ apple orange banana /]} print ${print "Do something here."; foo()} [1]'
Do something here.
orange
Не связан с StackOverflow