The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Число строк в файле Perl"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Число строк в файле Perl"  
Сообщение от Александр email(??) on 20-Апр-07, 14:52 
Как узнать число строк в файле на Perl? Неужели у такого мощного языка работы с текстом нет такой функции, (даже в PHP это делается одной функцией), не прибегая к полному считыванию файла в массив @content=<F> а далее число строк = $#content + 1;

Никакой памяти не хватит при работе с большими файлами.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Число строк в файле Perl"  
Сообщение от FarID (??) on 20-Апр-07, 15:04 
>Как узнать число строк в файле на Perl? Неужели у такого мощного языка работы с текстом нет такой функции, (даже в PHP это делается одной функцией), не прибегая к полному считыванию файла в массив @content=<F> а далее число строк = $#content + 1;
>
>Никакой памяти не хватит при работе с большими файлами.


а вы представляете как вообще происходит работа с файлами?
количество строк вы можете посчитать только когда просмотрите весь файл и посчитаете количество символов перевода строки [\r\n]

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Число строк в файле Perl"  
Сообщение от seller on 20-Апр-07, 15:31 
>Как узнать число строк в файле на Perl? Неужели у такого мощного языка работы с текстом нет такой функции, (даже в PHP это делается одной функцией), не прибегая к полному считыванию файла в массив @content=<F> а далее число строк = $#content + 1;
>
>Никакой памяти не хватит при работе с большими файлами.


а сис.вызов не поможет?

my $lines = `wc -l $filename`;
$lines =~ s/[^0-9]//g;

Для пояснения:

$ wc -l /etc/rc.conf
      36 /etc/rc.conf

$ cat /etc/rc.conf | wc -l
      36

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Число строк в файле Perl"  
Сообщение от Александр email(??) on 20-Апр-07, 19:10 
Вот С*ка, не знал про команду wc - а ведь вещь хорошая. Спасибо seller за ответ! Конечно сис вызов поможет!
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Число строк в файле Perl"  
Сообщение от andy email(??) on 23-Апр-07, 05:43 
>Никакой памяти не хватит при работе с большими файлами.

а зачем читать в массив, чтобы узнать количество строк? Вам, как уже было сказано, нужно посчитать количество символов "\n".

open(FILE, "< any.txt") or die($!);
$lines_count++ while <FILE>;
close(FILE);
print $lines_count, "\n";

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

$count += tr/\n/\n/ while sysread(FILE, $_, 2**20); # 2**20 - читает кусками по 1Мб

Опять же, как сказано выше, `wc -l`

($lines_count) = split(/\s+/, `wc -l $filename`);

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру