我想在运行循环时声明数组。我坚持了下来。我不知道怎么做 当我的程序进入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
我希望每次都将文件中的每一行存储在一个新数组中,因为我将在程序中稍后使用这些数组。程序应该每次都声明每个数组。
答案 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详细解释了陷阱,查看参考文献。
参考文献: