在perldata中,我找到了以下示例和说明。
@foo = ('cc', '-E', $bar);
assigns the entire list value to array @foo, but
$foo = ('cc', '-E', $bar);
assigns the value of variable $bar to the scalar variable $foo.
这真的让我感到困惑,所以
$foo
等于$bar
吗?如何理解@foo
和$foo
之间的区别
最佳答案
perldata中的示例:
@foo = ('cc', '-E', $bar);
$foo = ('cc', '-E', $bar);
由于
@foo
创建列表上下文,因此将括号中的所有值分配给@foo
。另一方面,$foo
是一个标量,因此仅分配给列表中的最后一个元素,因为它在标量上下文中。等于说:
'cc', '-E';
$foo = $bar;
在Perl中,标量(例如
$foo
)只能容纳一个值,因此列表的其余部分将被简单地丢弃。像@foo
这样的数组将抽取列表中包含的所有值。在Perl中,允许在不同类型的变量上使用相同的名称。
@foo
和$foo
将被视为两个不同的变量。
关于arrays - Perl的结构和分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8599335/