1

这是一段代码:

foreach my $in (@_)
{
    my $x1 = sprintf("%.2f", $in->[0]);
    my $x2 = sprintf("%.2f", $in->[1]);
    my $x3 = sprintf("%.2f", $in->[2]);
    $count++;
    print "running: $x1 $x2 $x3\n";
    print PF "$x1 $x2 $x3\n";
}

我想知道 $in 变量是什么?它是一个数组吗?为什么我们在这里使用 $in->[0] 而不是 $in[0] ?如何获得 $in 的长度?

谢谢!

4

4 回答 4

4

$in是一个数组引用(数组引用数组也是如此@_)。

scalar(@$in)您可以使用(或仅@$in在标量上下文中使用)获得元素的数量(假设这就是您所说的长度)。

于 2013-03-01T07:15:14.490 回答
3

您不能在 Perl 的其他结构中嵌套数组。您必须使用对数组的引用$,它是一个标量(因此它使用),并且需要->获取数据。

可以说这是一个很大的话题,对于任何重要的 Perl 编程来说都是不可或缺的。给perlreftut读一读。

于 2013-03-01T07:15:07.777 回答
1

$in是 的标量持有引用ARRAY

使用Data::Dumper并检查@_. 如果它们是引用,那么为了访问它们,我们使用->.

在您的代码中,

  • $in->[0]将意味着您正在访问数组引用的第一个元素@_
  • $in->[1]将意味着您正在访问数组引用的第二个元素@_
  • $in->[2]将意味着您正在访问数组引用的第三个元素@_
于 2013-03-01T07:27:32.180 回答
0

$in这是对数组的引用(类似于 C 指针)。因此,->用于取消引用此引用以获取数组本身。

于 2013-03-01T07:14:53.567 回答