use*_*094 2 arrays perl scalar
在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.
Run Code Online (Sandbox Code Playgroud)
这真让我困惑,所以$foo相当于$bar?如何理解之间的区别@foo和$foo
perldata中的示例:
@foo = ('cc', '-E', $bar);
$foo = ('cc', '-E', $bar);
Run Code Online (Sandbox Code Playgroud)
因为@foo创建了一个列表上下文,所以parens中的所有值都被赋值给@foo.$foo另一方面是标量,因此只分配列表中的最后一个元素,因为它位于标量上下文中.
它等于说:
'cc', '-E';
$foo = $bar;
Run Code Online (Sandbox Code Playgroud)
在Perl中,标量就像$foo只能保存一个值,所以列表的其余部分就会被丢弃.数组@foo会像列表一样包含多个值.
在Perl中,允许在不同类型的变量上使用相同的名称.@foo并且$foo将被视为两个不同的变量.