Есть ли в Perl какая-либо разница между следующими двумя конструкциями:
*main::foo = *main::bar
и
$main::{foo} = $main::{bar}
Похоже, что у них одна и та же функция (создание всех слотов в *main::foo
с теми, которые определены в *main::bar
), но мне просто интересно, всегда ли сохраняется эта эквивалентность.
{no strict 'refs'; *{'some::pkg'.$new} = *{'some::pkg'.$old}
, когда$some::pkg::{$new} = $some::pkg::{$old}
будет работать так же хорошо. Интуитивно они кажутся одинаковыми, но такие вещи, как связи/перегрузки/другая магия, могли бы иметь интересные последствия, если бы они обрабатывали копию по-разному, будь то ошибка или предполагаемое поведение. - person Eric Strom   schedule 07.07.2011