Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите узнать кол-во слов 
:(
    Опции темы
walan
Дата 10.3.2008, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



Проблема в следующем:
Есть фаил "stix.txt"

 в нем написан стих

как на PERL написать скрипт что бы подсчитал все слова и буквы в нем?

PM MAIL   Вверх
Itsys
Дата 10.3.2008, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 2
Всего: 34



Код

open (F, "<stix.txt");
$text = join(" ",<F>);
$slova = scalar(split(/ /, $text));
$text =~ s/ //g;
$bukvi = scalar(split//, $text);


Помоему так должно сработать, не проверял
PM MAIL WWW Skype   Вверх
walan
Дата 11.3.2008, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



Itsys 

забыл довавить, что бы и вывести эти данные на экран
представить сколько всего слов и всех букв в файле, вот (
PM MAIL   Вверх
shamber
Дата 11.3.2008, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



walan, начните наверно с раздела тут и почитайте документацию.
Если вы не знаете как использовать функцию print это вам очень поможет.
PM MAIL Jabber   Вверх
amg
Дата 11.3.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(walan @  11.3.2008,  00:04 Найти цитируемый пост)
вывести эти данные на экран
Код

perl -ln0e "s/^\s+//; s/\s*$/ /; print 'words ',s/\s+//g, ', letters ',length" stix.txt

ЗЫ walan, прислушайтесь к совету shamber'а

Это сообщение отредактировал(а) amg - 11.3.2008, 15:25
PM MAIL   Вверх
ginnie
Дата 11.3.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Уважаемый amg, вроде знаки препинания буквами не считаются, кроме того, может быть и такой текст
Код

Хлеб - всему голова!



--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
walan
  Дата 11.3.2008, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



Цитата(amg @ 11.3.2008,  14:44)
Цитата(walan @  11.3.2008,  00:04 Найти цитируемый пост)
вывести эти данные на экран
Код

perl -ln0e "s/^\s+//; s/\s*$/ /; print 'words ',s/\s+//g, ', letters ',length" stix.txt

ЗЫ walan, прислушайтесь к совету shamber'а

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

текст
PM MAIL   Вверх
ginnie
Дата 11.3.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Уважаемый Itsys,

Код

$slova = split(/ /, $text);


split() вызывается в скалярном контексте, поэтому явно указывать скалярный контекст при помощи scalar не нужно.


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
Itsys
Дата 11.3.2008, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 2
Всего: 34



ginnie, Привычка...  smile сути же не меняет
PM MAIL WWW Skype   Вверх
amg
Дата 12.3.2008, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(ginnie @  11.3.2008,  17:52 Найти цитируемый пост)
знаки препинания буквами не считаются, кроме того, может быть и такой текст: Хлеб - всему голова!
Справедливо! Наверное, будет немного лучше, если заменить в коде все \s на \W. Вообще, много зависит от того, что понимать под буквой (и словом). Пусть для простоты буквой будет \w

Цитата(walan @  11.3.2008,  18:47 Найти цитируемый пост)
какая-то не разбериха, можно пояснить
Код

die "Usage: $0 stix.txt\n" unless @ARGV; # help
use locale;    # Чтобы в \W не попадали русские буквы
local $/;      # Чтобы зачитать файл целиком
$_ = <>;       #  за одну операцию чтения в переменную $_
# $_ по умолчанию подставляется во многие функции (s///, length)
s/^\W+//;      # Удаляем "небуквы" вначале (в переменной $_)
s/\s*$/ /;     # Гарантируем пробел в конце
$w = s/\W+//g; # Удаляем промежутки между словами, запоминаем их кол-во
$l = length;   # В $_ теперь сплошной текст, запоминаем его длину
print "words $w, letters $l\n"; # Печатаем результат


PM MAIL   Вверх
Itsys
Дата 12.3.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 2
Всего: 34



Цитата(amg @  12.3.2008,  13:25 Найти цитируемый пост)
use locale;

В Windows не работает вот. smile 
PM MAIL WWW Skype   Вверх
amg
Дата 12.3.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(Itsys @  12.3.2008,  13:37 Найти цитируемый пост)
В Windows не работает
Тогда можно вместо use locale; самому определить "небукву", например 
Код

$W = qr([^\w\xC0-\xFFёЁ]); # "небуква" для Windows (cp1251) и linux (KOI8-R)
$W = qr([\s[:punct:]]); # или как-нибудь так
 и в регулярных выражениях заменить \W на $W


Это сообщение отредактировал(а) amg - 12.3.2008, 14:06
PM MAIL   Вверх
shamber
Дата 12.3.2008, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Itsys, не совсем правы.

Код

use POSIX qw(locale_h);
use locale;
setlocale(LC_CTYPE, "ru_RU.CP1251");


работает
....

Это сообщение отредактировал(а) shamber - 12.3.2008, 15:15
PM MAIL Jabber   Вверх
shamber
Дата 12.3.2008, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



... косяк инета

Это сообщение отредактировал(а) shamber - 12.3.2008, 15:14
PM MAIL Jabber   Вверх
Itsys
Дата 12.3.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 2
Всего: 34



Цитата(shamber @  12.3.2008,  14:56 Найти цитируемый пост)
use POSIX qw(locale_h);
use locale;
setlocale(LC_CTYPE, "ru_RU.CP1251");


Не могу сказать однозначно, но помоему так я пробовал ругается на setlocale(LC_CTYPE, "ru_RU.CP1251"), говорит, что нет такой локали и все тут.

PS Хотя могу ошибаться, т.к. это было давно.. в самом начале моей карьеры... с тех пор больше не пробовал - пользуюсь способом указанным amg.
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2014 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.