perl中的克隆
当一个perl变量用等号赋值给另一个perl变量时,将产生类似静态语言如java中的深度克隆,如下$a=1;
$a1=$a;
如果改变$a1=2
则$a=1不改变
以上可看出赋值操作会为新变量分配新内存,并把右值设置到内存中
但是如果用引用
$a2=\$a1;
情况将不同,改变a2引用内存的值,a1将改变
$$a2=3
此时a1将变为3
一般静态语言中的赋值操作,对应对象类型来说,只是声称一个引用,并未新声成一个对象,但perl则相反,赋值操作将会产生新对象,这点尤其注意
以上是对标量进行测试的,换成数组,则可更明显的看出差别
如:
@a=1..3;
@a1=@a;
$a1=-1;
print @a,"\n";
输出123,而java中则变成-123
页:
[1]