2010-05-02 4 views
3

Я только начинаю с perl и хотел бы помочь с массивами, пожалуйста. Я читаю строки из файла данных и разделения строки на поля:Загрузка данных из файла в массив 2d

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

Затем я хочу, чтобы хранить отдельные значения полей (в @data) в и массив, так что массив выглядит как файл входных данных т.е. первая «строка» массива содержит первую строку данных от INFILE и т. д.

Каждая строка данных из infile содержит 4 значения, x, y, z и w, и как только данные все находятся в array, я должен передать массив в другую программу, которая считывает x, y, z, w и отображает значение w на экране в точке, определяемой значением x, y, z. Я не могу передавать данные в другую программу поэтапно, так как программа ожидает, что данные будут в формате 2d matrtix. Любая помощь очень ценится. Крис

ответ

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 более чем разделяются запятыми.

+0

Спасибо за ваш быстрый ответAxeman, дадут ему повод – Chris

+0

Эти решения работают хорошо, но проблема, которую я сейчас имею, - как получить фактические значения из массива? например, если входной файл 1,2,3,4 5,6,7,8 Я хочу тое быть в состоянии передать эти значения в другую программу из массива Благодаря Криса – Chris

+0

Чтобы дать Лил более подробно, код, который считывает данные в RunMenu ( "FILES_ASCII_READ", "прервать", к югу { PanelResults ( "spec_choice", "data_file" => $ csvfile, .... $ csfile - это текстовый файл, содержащий данные 1,2,3,4 5,6,7,8 .... и это прочитано в порядке. Я хотел бы подставить массив данных для $ csvfile – Chris

Смежные вопросы