загрузка данных из файла в 2d массив - PullRequest
3 голосов
/ 02 мая 2010

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

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

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

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

1 Ответ

6 голосов
/ 02 мая 2010

Это не так уж сложно, вам просто нужно сохранить разбиения не в отдельном списке, а в массиве, занимая слот большего массива:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...