2013-03-01 67 views
1

这里有一段代码:的Perl “ - >” 操作符

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 - > [0]而不是$ [0]?如何获得$的长度?

谢谢!

+5

'$ man perlref' – Jokester 2013-03-01 07:23:52

回答

4

$in是一个数组引用(所以@_是一个数组引用的数组)。

scalar(@$in)(或者在标量上下文中只使用@$in)得到元素的数量(假设这就是你的意思)。

3

不能在Perl中的其他结构中嵌套数组。你必须使用一个参考到一个数组,它是一个标量(所以它使用$),并且需要->来获取数据。

只需说这是一个很大的话题,它是任何不平凡的Perl编程中不可或缺的一部分。给perlreftut一读。

1

$in是一个标量持有ARRAY的参考。

使用Data::Dumper并检查@_的内容是什么。如果他们是参考,那么为了访问它们,我们使用->

在你的代码,

  • $in->[0]将意味着你正在访问的数组引用第一个元素@_
  • $in->[1]意味着您正在访问@_中的数组引用的第二个元素。
  • $in->[2]意味着您正在访问@_中的数组引用的第三个元素。