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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Perl чтение из файла по словам 
:(
    Опции темы
TOXA23
Дата 6.2.2006, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня есть некоторый фаил «category.txt»
помогите сделать чтобы скипт читал не по целым строкам, а по словам (между слов раздилитель «|») тоесть:
в файле «category.txt»:
soft|софт
comp|компьютор
web|интерне
вывести:
soft софт
comp компьютор
web интерне

вот мой скрипт который читает из файла «category.txt» по строкам:

Код

open(CATFILE, "category.txt") || &errorcode(__FILE__, __LINE__, "category.txt", "$!", "print", "FILE OPEN ERROR", "1");
while (<CATFILE>)
{
      chomp $_;
      chop $_;
      $dcat = $_;
      $dcat =~ s/_/ /g;

       print “$dcat”
}
close (CATFILE);


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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Разбивай строку по символу разделителю:
Код

open(CATFILE, "< category.txt") || &errorcode(__FILE__, __LINE__, "category.txt", "$!", "print", "FILE OPEN ERROR", "1");
while (<CATFILE>) {
          chomp;
          s/_/ /g;
          my($first, $second) = split(/\|/);
          print "$first => $second\n";
}
close (CATFILE);

Если нужно обрезать конец строки, то достаточно одного chomp, chop не нужен. Если chomp не передана переменная, то будет удалён символ пееревода строки из переменной $_, потому её указывать не обязательно, тоже самое касается и split, а так же поиска по шаблону с подстановкой.

Модератор: Для вставки кода, пользуйся кнопкой КОД, из выпадающего списка выбери тот язык, код которого ты вставляешь. После чего код не будет терять форматирование, а так же будет подсвечен.

Это сообщение отредактировал(а) korob2001 - 6.2.2006, 22:11


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Kiber_rat
Дата 7.2.2006, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

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



Вот тебе еще вариант smile
Код
open FH, "< $ARGV[0]" or die "Can't open $ARGV[0], $!\n";
print join " ", split /\|/,$_ while <FH>;

И еще пару примеров, для "закрепления" smile
Код
open FH, "< file.txt" or die "Can't open file, $!\n";
print join "\n", split /\b/, $_ while <FH>;
или так еще можно, что бы отсеять не буквы/цифры
Код
open FH, "< file.txt" or die "Can't open file, $!\n";
print join "\n", grep /[_a-zA-Z0-9]/, split /\b/, $_ while <FH>;


Это сообщение отредактировал(а) Kiber_rat - 7.2.2006, 10:04


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
MaxPayne
Дата 7.2.2006, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я делал раньше так:

Код

open (L,"log.txt");
while (<L>)
{
($name,$name2) = split(/\|/,$_);
print "<font color=0080C0><b>$name</b>:</font> $name2<br>";
}
close(L);

PM MAIL WWW ICQ   Вверх
tishaishii
Дата 14.2.2006, 01:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


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

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



Код
($/, $\)=('|', "\n");
my$fh;
open $fh, '<'.$file_name;
chomp, print while <$fh>;
close $fh;


$/ - разделитель для чтения файлов.
$\ - используется при выводе с помощью "print".
Код
($,, $\)=(' ', "\n");
print /^\s*(.*?)\s*\|\s*(.*?)[\r\n]/ while <>;


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


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

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


 




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


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

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