相关疑难解决方法(0)

Perl数组vs列表

我在Perl中有两个数据结构:

数组:

my @array2 = ( "1", "2", "3");

for $elem (@array2) {
    print $elem."\n";
}
Run Code Online (Sandbox Code Playgroud)

给我以下输出:

1
2
3
Run Code Online (Sandbox Code Playgroud)

还有一个清单:

my @array = [ "1", "2", "3"];                                            

for $elem (@array) {
    print $elem."\n";
}
Run Code Online (Sandbox Code Playgroud)

给出以下输出:

ARRAY(0x9c90818)
Run Code Online (Sandbox Code Playgroud)

显然,我想在两种情况下迭代元素,但为什么第二种解决方案只给我这个数组的引用?

arrays perl perl-data-structures

41
推荐指数
4
解决办法
5万
查看次数

为什么山羊运营商有效?

数组和列表之间以及列表和标量上下文之间的区别已经在去年的Perl社区中进行了相当多的讨论(并且每年都是如此).我已阅读过chromaticfriedo的文章,以及这个推荐的修士节点.现在我想了解goatse运营商,中记录perlsecret.

这是我用来研究它的一些代码:

# right side gets scalar context, so commas return rightmost item
$string = qw(stuff junk things); 
say $string; # things

# right side gets list context, so middle is list assigned in scalar context
$string = () = qw(stuff junk things);
say $string; # 3

# right side gets list context, so creates a list, assigns an item to $string2, and
# evaluates list in scalar context to assign to …
Run Code Online (Sandbox Code Playgroud)

syntax perl variable-assignment goatse

10
推荐指数
3
解决办法
554
查看次数

标量 vs 列表赋值运算符

请帮助我理解以下片段:

  • 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);

perl assignment-operator

4
推荐指数
1
解决办法
253
查看次数