perl代码在循环的帮助下声明数组

时间:2014-05-03 08:21:16

标签: arrays perl

我想在运行循环时声明数组。我坚持了下来。我不知道怎么做 当我的程序进入for循环时,我希望它自己声明一个数组并将特定值存储在其中。例如:

    #!/bin/usr/perl -w 

    use strict;

    open(R1,"$file") || die ("error");

    while (my $line=<R1>) {
                        my $m=0;
                        for ( my $i=0 ; $i < my $l ; $i++ ){
              ##here i want to declare an array.  
              Such that each array stores each line from the file.

      } 

输入: file1.txt

1      3  
4      6  
5      10  
3      5  

输出:

array 1: 1 3  
array 2: 4 6  
array 3: 5 1  
array 4: 3 5 

我希望每次都将文件中的每一行存储在一个新数组中,因为我将在程序中稍后使用这些数组。程序应该每次都声明每个数组。

2 个答案:

答案 0 :(得分:2)

我认为你并不想为输入文件的每一行声明一个数组。如果您希望将数据用于进一步处理,可以将其简单地读入arrayrefs数组中。这是一些示例代码。

#!/usr/bin/env perl 

use strict;
use warnings;

use Data::Dumper;

my $file = 'file1.txt';
open( R1, "$file" ) or die "error reading $file: $!";

my @result;    # this array will hold referenced to the individual lines
while ( my $line = <R1> ) {
    chomp $line;    # get rid of trailing newline
    my @fields = split m/\s+/, $line;
    push @result, \@fields;
}
close R1;

print Dumper( \@result );    # show the data structure

# print the desired output
my $linenum = 1;
for my $array_ref (@result) {
    print "array $linenum: ", join( ' ', @{$array_ref} ), "\n";
    $linenum++;
}

对于这类任务,您可能还需要查看CPAN模块,如Text::CSV

答案 1 :(得分:1)

我认为你要问的是根据用户输入动态创建数组(或者在你的情况下说是行数)。启蒙书“高阶Perl”一书的作者Mark Dominus详细解释了陷阱,查看参考文献。

参考文献:

  1. http://perl.plover.com/varvarname.html
  2. http://perl.plover.com/varvarname2.html
  3. http://perl.plover.com/varvarname3.html
  4. Creating arrays dynamically in Perl