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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск значения в текстовой базе, реализация 
:(
    Опции темы
Podkovka
Дата 15.11.2011, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Прошу помощи в реализации куска кода.
Имеем текстовый файл TheTVDB.txt вида:
name_show id_show
Код
Antiques.Roadshow.UK 83774
Antiques.Roadshow 75117
Call.Me.Fitz 191101
Swamp.Wars 249372
Austin.City.Limits 71649
60.Minutes.US 73290
Call.of.the.Wildman 253415
Hung 82091
My.Extreme.Animal.Phobia 252795
Homeland 247897
IRT.Deadliest.Roads 194271
Squidbillies 79017
The.Next.Iron.Chef 80665

Имеем входную переменную $release_name вида Call.Me.Fitz.S02E07.720p.HDTV.x264-2HD
Необходимо сделать последовательный (т.к. возможно двойное совпадение, например, Antiques.Roadshow.UK и Antiques.Roadshow) перебор в текстовом файле и при совпадении присвоить переменной $ID_Show значение после  name_show, в противном случае $ID_Show=0.
Как мне кажется, нужно брать данные из TheTVDB.txt и сравнивать с $release_name, т.к. ключ в TheTVDB.txt короче значения $release_name (Call.Me.Fitz - Call.Me.Fitz.S02E07.720p.HDTV.x264-2HD).
Вид файла TheTVDB.txt можно изменить, если не удобен в обработке, т.к. создается вручную.
На много меня не хватило smile
Код

#!/usr/bin/perl -w
my $release_name = "Call.Me.Fitz.S02E07.720p.HDTV.x264-2HD";
my $file = "/home/user/TheTVDB.txt";
my %from = ();
open (TheTVDB,"$file") || die "Can't open $file : $!";
#находим совпадение (Call.Me.Fitz) и присваиваем ID (191101)
close TheTVDB;

PM MAIL   Вверх
arto
Дата 15.11.2011, 11:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



# perl -aF"\\s+" -lne 'BEGIN{$id=shift}$id=~m#^\Q$F[0]\E#&&print$F[1]' Call.Me.Fitz.S02E07.720p.HDTV.x264-2HD file
191101
#
PM MAIL ICQ   Вверх
Podkovka
Дата 15.11.2011, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



@arto
Спасибо, великолепное решение. Но я новичок в perl  и для меня one-liner решение как дремучий лес smile
Если Вас не затруднит, прошу показать пример в "классическом" виде.
PM MAIL   Вверх
dixoNICH
Дата 15.11.2011, 12:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

open f, "file.txt" or die "$!";
$/ = \0;
my $idshow = 0;
my $file = <f>;
my $release_name = "Call.Me.Fitz.S02E07.720p.HDTV.x264-2HD";
$release_name =~/(.+)\.S\d{2}E\d{2}/;
$idshow = $1 if $file=~/$1\s(\d+)/;

PM MAIL   Вверх
Podkovka
Дата 15.11.2011, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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


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

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


 




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


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

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