Я хочу нажать ссылку на хэш. Под этим я подразумеваю, что хочу направить ссылку на новый хеш, который является мелкой копией хэша, который я даю.
Как создать мелкую копию?
Ответ 1
Просто скопируйте его:
my %copy = %$hash;
Если вам нужна другая ссылка, просто разверните исходную ссылку в анонимном хеш-конструкторе:
my $copy = { %$hash };
Для тех, кто задается вопросом о неглубоких копиях: этот вид присваивания делает только новые значения для клавиш верхнего уровня. Любые значения, которые являются ссылками, по-прежнему будут одной и той же ссылкой в новом хеше. То есть вы можете заменить значение в новом хэше, не меняя исходный хеш. Если вы просто изменяете значение, например, нажимая новый элемент на значение анонимного массива, оба хэша получают изменение, потому что они имеют одну и ту же ссылку. Таким образом, мелкие копии обычно не то, что вы хотите.