标量 vs 列表赋值运算符

ike*_*ami 4 perl assignment-operator

请帮助我理解以下片段:

  • my $count = @array;
  • my @copy = @array;
  • my ($first) = @array;
  • (my $copy = $str) =~ s/\\/\\\\/g;
  • my ($x) = f() or die;
  • my $count = () = f();
  • print($x = $y);
  • print(@x = @y);

ike*_*ami 6

该符号=被编译为两个赋值运算符之一:

  • 一个列表赋值运算符aassign)用于若的左手侧(LHS)=是某种骨料。
  • 标量赋值运算符sassign)被以其它方式使用。

以下被认为是聚合:

  • 括号中的任何表达式(例如(...)
  • 一个数组(例如@array
  • 一个数组切片(例如@array[...]
  • 哈希(例如%hash
  • 一个哈希切片(例如@hash{...}
  • 任何以上前面有my,ourlocal

运营商之间有两个区别。

操作数的上下文

这两个运算符在其操作数被评估的上下文中有所不同。

返回的值

这两个运算符的返回内容不同。