Хотя это довольно простой вопрос, я не могу найти аналогичный вопрос, поэтому, пожалуйста, дайте ссылку на него, если вы знаете о существующем вопросе / решении по Итак.
У меня есть файл .txt
размером около 2 МБ и примерно 16 000 строк. Длина каждой записи составляет 160 символов с коэффициентом блокировки 10. Это более старый тип структуры данных, который почти похож на файл с разделителями табуляцией, но разделение осуществляется одиночными символами / пробелами.
Во-первых, I glob
каталог для . txt
- в каталоге никогда не может быть больше одного файла, поэтому эта попытка может быть неэффективной сама по себе.
my $txt_file = glob "/some/cheese/dir/*.txt";
Затем я открываю файл со следующей строкой:
open (F, $txt_file) || die ("Could not open $txt_file");
Согласно словарю данных для этого файла, я разбираю каждое «поле» из каждой строки с помощью функции Perl substr ()
в пока цикл.
while ($line = <F>)
{
$nom_stat = substr($line,0,1);
$lname = substr($line,1,15);
$fname = substr($line,16,15);
$mname = substr($line,31,1);
$address = substr($line,32,30);
$city = substr($line,62,20);
$st = substr($line,82,2);
$zip = substr($line,84,5);
$lnum = substr($line,93,9);
$cl_rank = substr($line,108,4);
$ceeb = substr($line,112,6);
$county = substr($line,118,2);
$sex = substr($line,120,1);
$grant_type = substr($line,121,1);
$int_major = substr($line,122,3);
$acad_idx = substr($line,125,3);
$gpa = substr($line,128,5);
$hs_cl_size = substr($line,135,4);
}
Может ли кто-нибудь предложить более эффективный / предпочтительный метод?