Вас интересуют остальные колонки?Если нет, просто игнорируйте их.
Этот фрагмент программы считывает строку из файла, а затем помещает нужный столбец в массив @medium_array
.Поскольку большинство людей считают первый столбец столбцом № 1, а Perl считает его столбцом № 0, я добавил смещение под названием COLUMN_OFFSET
.
Основная часть работы выполняется с помощью этой строки.:
push @medium_array, (split " ", $line)[$column_for_medium - COLUMN_OFFSET];
В этой строке используются команды push
и split
.Не двигайтесь дальше, пока не поймете, что делает эта строка.
Эта программа может использовать более эффективную проверку ошибок параметров.Пользователь запрашивает столбец больше, чем количество столбцов в файле?Что делать, если в файле нет столбца?Что делать, если файл не существует?Все эти вещи должны быть добавлены и проверены в этой программе.
В конце эта программа сохраняет желаемый столбец в @medium_array
.Оттуда вы сможете использовать свой предыдущий код, чтобы найти носитель для этого столбца.
use strict;
use warnings;
use autodie;
use constant {
COLUMN_OFFSET => 1, #Incase you want to number cols from 1 instead of 0
};
# Read in the command line parameters
my $column_for_medium = shift;
my $file_name = shift;
# Some sort of parameter checking
if (not defined $file_name and not $column_for_medium =~ /^\d+$/) {
die qq(You must have two parames: "Column Num" and "File Name");
}
open (my $array_file, "<", $file_name);
my @medium_array;
while (my $line = <$array_file>) {
chomp $line;
push @medium_array, (split " ", $line)[$column_for_medium - COLUMN_OFFSET];
}