![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| marowak |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 27.6.2011 Репутация: нет Всего: нет |
Я новичок в Perl, прошу помочь с решением несложной задачи, если возможно хотелось бы с использование for, while для более лёгкого понимания, ну и другим вариантам я естественно буду рад.
Требуется подсчитать сколько раз встречается слово например "user" в файле "file.txt" содержимое файла типо "авраподдвыппррп user влп user овлала". |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
Примерно так
|
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
perl -lne 'BEGIN{ $a = shift } foreach (split "\\W+") { $h{$_}++ } END{ print $h{$a} }' user file
|
|||
|
||||
| afiskon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 31.3.2011 Где: Россия, Москва Репутация: нет Всего: 4 |
Правильно это задача решается с помощью регулярных выражений. Если вы только учите язык, для вас это будет сложновато. Лучше начните с мат части и задач попроще, типа посчитать число строк в файле, вывести содержимое файла в обратном/случайном порядке, какое-нибудь простое шифрование-дешифрование.
|
|||
|
||||
| dixoNICH |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
|
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
$/=\0; -- это к чему?
Добавлено через 5 минут и 55 секунд а, понял |
|||
|
||||
| marowak |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 27.6.2011 Репутация: нет Всего: нет |
спасибо всем! помогли
|
|||
|
||||
| SkoobyDoo |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 4.10.2007 Репутация: нет Всего: нет |
|
||||||
|
|||||||
| Pfailed |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
Автор кода хотел с помощью оператора <> считать весь файл за 1 раз. Обычно этот оператор читает по одной строке в скалярном контексте, а строго говоря читает пока не встретит разделитель указанный в специальной переменной $/. По умолчанию это перенос строки. У меня есть подозрение, что автор хотел написать $/ = "\0", действительно нулевой байт в текстовом файле встретиться не должен и весь файл считается за раз. Однако забыв кавычки получилась ссылка на число ноль и разделителем стало нечто вроде SCALAR(0x1041968). Конечно вероятность встретить такое в обычном тексте стремится к нулю, но все же это потенциальная ошибка. Короче говоря, правильным вариантом будет $/ = undef, это позволит за 1 раз считать любой файл целиком. |
||||||||
|
|||||||||
| SkoobyDoo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 4.10.2007 Репутация: нет Всего: нет |
Pfailed, благодарю!
|
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
несколько не так:
# perldoc perlvar | less -p INPUT_RECORD_SEPARATOR ... Setting $/ to a reference to an integer, scalar containing an integer, or scalar that's convertible to an integer will attempt to read records instead of lines, with the maximum record size being the referenced integer. ... Trying to set the record size to zero or less will cause reading in the (rest of the) whole file. |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
Ожидаемый подвох
|
|||
|
||||
| dixoNICH |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
сбоя ни разу не было
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |