昨天我问了这个问题,并得到了很多有用的回答,希望今天也能如此。以下是我的修改后脚本。
#! /usr/bin/perl
use strict;
use warnings;
my $line;
my @array;
my $print;
open (OUT , ">","output.txt")or die "cant open: $!";
while ($line = <>){
chomp($line);
push(@array, $line);
if(@array == 250){
$print = print "[", join(",",@array), "]", "\n";
print OUT $print;
@array = []
}
}
起初我只是说需要将一个由标准输入构建的数组的前250个元素输出到文本文件中,但我没有说明的是,用于构建数组的输入可能包含数千行。创建一个数组的原因是为了将数组大小限制为250个实体,然后将该数组作为格式化字符串打印出来。然后我需要清空数组,并从即将成为输入的第251行继续构建数组,并在剩余输入中继续执行此过程。假设输入有5k行,我希望我的输出是一个文本文件,其中包含原始的5k行输入,但被分为由250个数组实体组成的字符串。
目前的脚本只将数组打印到屏幕上,在“output.txt”中有一行文字:1111111
。
@array = []
是错误的,它创建了一个数组引用。正确的写法是@array = ()
或者undef @array
。 - Birei