在Perl中创建和打印坐标数组

时间:2014-03-11 18:19:33

标签: html arrays perl

我已经看到了关于制作二维数组的其他问题,但其中大多数似乎都在处理数组变量中的大量数组变量。我跟着他们有困难。我想要做的是:

my @array = [ [50, 1], [52, 2], [45, 3], [60, 4] ];

并且能够引用它并将其打印为二维数组(我使用此脚本生成一个html文件。)但每当我尝试引用@array的长度时,它就会出现1.打印此数组或引用一对坐标或单个数字的正确语法是什么?

例如,我如何引用子数组[50,1]与引用" 1"元件?

2 个答案:

答案 0 :(得分:3)

最外面的括号[]应该是圆括号()。方括号[]为数组引用提供了一个数组引用,因为嵌套元素必须是perl中的引用。

所以:

my @array = ([50, 1], [52, 2], [45, 3], [60, 4]);
print length(@array); # Should give 4.

# Iterate & print
foreach my $sub_array (@array) {
    print "a: $sub_array->[0], b: $sub_array->[1]\n";
} 

答案 1 :(得分:1)

你可以这样做:

#!/usr/bin/perl
use strict;
use warnings;

my @array = ( [50, 1], [52, 2], [45, 3], [60, 4] );

print join(" ", @array) . "\n"; #prints all array references (not very useful)

print join(" ", @{$array[1]}) . "\n"; # prints 52 2

print ${$array[0]}[1] . "\n"; # prints 1

我在更详细的here

中对此进行了解释

以下是如何迭代它的示例:

for my $arr_ref (@array) {

  for my $element ( @{$arr_ref} ) {
    print $element . ", "; 
  }
  print "\n";
}

输出:

50, 1, 
52, 2, 
45, 3, 
60, 4,