将数据从文件加载到2d数组

时间:2010-05-02 00:32:26

标签: perl arrays io multidimensional-array

我刚开始使用perl,并希望对数组有所帮助。 我正在从数据文件中读取行并将行拆分为字段:

open (INFILE, $infile);
do {
my $linedata = <INFILE>;
my @data= split ',',$linedata;
....
} until eof;

然后我想将各个字段值(在@data中)存储在和数组中,以便数组看起来像输入数据文件,即数组的第一个“行”包含来自{{1的第一行数据等等。

来自infile的每行数据包含4个值,x,y,z和w,一旦数据都在数组中,我必须将数组传递给另一个读取x,y,z,w的程序并在由x,y,z值确定的点处在屏幕上显示w值。我无法逐行将数据传递给其他程序,因为程序期望数据采用2d matrtix格式。 任何帮助非常感谢。 克里斯

1 个答案:

答案 0 :(得分:6)

这并不是那么困难,你只需要存储拆分,而不是在他们自己的单独列表中,而是在数组中,占用更大数组的插槽:

my @all_data;

while (my $linedata = <INFILE>) { 
   push # creates the next (n) slot(s) in an array
       @all_data
     , [ split ',',$linedata ] 
       # ^ we're pushing an *array* not just additional elements.
      ; 
}

但是,如果您只是尝试将一个众所周知的概念作为逗号分隔值格式阅读,那么请查看Text::CSV之类的内容,因为它具有全部功能CSV不仅仅是用逗号分割。