perl - (variable) = @_ 和 variable = @_ 有什么区别
问题描述
我正在学习perl,想调用一个函数,并传递2个参数给它,这里是代码:
use strict;
use warnins;
sub test
{
my ($item) = @_;
print "$item\n";
}
test("hello world");
结果是:你好世界
如果我将代码更改为这样:
my $item = @_;
那么结果是:1
差异的原因是什么?有点困惑,我理解@_是调用它时传递给函数test的参数,是字符串“hello world”,那么为什么将@_分配给$item后,结果是1,似乎是数组的长度@_ ,但 ($item) 是参数本身,
解决方案
有两种不同的赋值运算符,标量赋值运算符和列表赋值运算符。如果左侧=
是列表、散列、数组或切片,则它是列表赋值。否则,它是一个标量赋值。
标量赋值给出其右操作数标量上下文。在标量上下文中,数组计算为数组中元素的数量。
推荐阅读
- javascript - 更改时使用css为div中的文本设置动画
- flutter - 如何解决 Box not Found 错误 Hive Flutter
- arrays - C 数组中同一项目的不同输出
- javascript - 如何增加两边的元素宽度
- r - R - 在多个 R 脚本中自动查找字符串匹配
- typescript - 如果我正在使用可选的界面字段,请让 Typescript 警告我
- javascript - 如何通过单击更改 svg 的填充颜色
- spring - 如何让 IntelliJ 将多个应用程序属性识别为 Spring 配置?
- python - 如何解决此 Memgraph SSL 连接错误?
- google-compute-engine - 如何使用 Google 部署管理器创建区域健康检查