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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с файлами в PERL 
:(
    Опции темы
nerv
Дата 27.3.2007, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



возикла следующая проблема.  
есть 2 текстовых файла *.txt. 
необходимо организовать поиск подстрок из одного файла в строках другого. 
срандартные операции типа index, !~s, ~s и проч. напроч отказываются работать со строковыми переменными такого типа. работают только в том случае, если исследуемые строку и подстроку прописать в теле программы.  а мне бы очень хотелось (это необходимо) этого избежать 
PM MAIL   Вверх
tishaishii
Дата 27.3.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Могут работать /\Q$_\E/.
Только оно не за чем, если просто по подстроке, а не по шаблону.
Используй index.
PM MAIL ICQ Skype   Вверх
nerv
Дата 29.3.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



index не пашет. вот это работает:
$a="wtdfwefdhgvhvhhfhbvkerb";
print '$a=',$a,"\n\n";

$s="fdh";
print '$s=',$s,"\n\n";

$pos=-1;
while(($pos=index($a,$s,$pos))>-1)
{
print "найдено в позиции $pos\n";
$pos++;
}
print "\n\n\n";

а это нет:
$q=@mas_1[2];
print '$q=',$q,"\n\n";
$w=@mas_2[0];
print '$w=',$w,"\n\n";
$pos_=-1;
while(($pos_=index($q,$w,$pos_))>-1)
{
print "найдено в позиции $pos_\n";
}

здесь @mas_1[2] и @mas_2[0] это строки в массивах строк, записанных в 2х соответствующих файлах 
 smile 
PM MAIL   Вверх
arto
Дата 29.3.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



>cat > a1.txt
test1
test2
^C
>cat > a2.txt
sdvkbsafvlksanbv
swvljksabvtest1aefchweflh
swfhwslhvrf
test1
asefheafj
test
^C
>grep -fa1.txt a2.txt
swvljksabvtest1aefchweflh
test1
PM MAIL ICQ   Вверх
nitr
Дата 29.3.2007, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



Ребята "давайте жить дружно" smile
Форум многофункционален ;) - проще говоря, подсветку сделайте для код... Надеюсь как это делается ненадо учить...


--------------------
PM   Вверх
amg
Дата 30.3.2007, 04:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(nerv @  29.3.2007,  13:49 Найти цитируемый пост)
а это нет:
Код

$q=@mas_1[2];
print '$q=',$q,"\n\n";
$w=@mas_2[0];
print '$w=',$w,"\n\n";
$pos_=-1;
while(($pos_=index($q,$w,$pos_))>-1) {
  print "найдено в позиции $pos_\n";
}

Во-первых, $pos_++; пропущено (а то будет бесконечный цикл в случае нахождения подстроки). Во-вторых, chown $w; (или chown @mas_2;) делал? Если нет, то $w будет оканчиваться символом "\n", который в строке $q если и присутствует, то только в самом конце, и поэтому, скорее всего, такая $w в $q не будет обнаружена.
PM MAIL   Вверх
tishaishii
Дата 30.3.2007, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(nerv @ 29.3.2007,  13:49)
index не пашет. вот это работает:
$a="wtdfwefdhgvhvhhfhbvkerb";
print '$a=',$a,"\n\n";

$s="fdh";
print '$s=',$s,"\n\n";

$pos=-1;
while(($pos=index($a,$s,$pos))>-1)
{
print "найдено в позиции $pos\n";
$pos++;
}
print "\n\n\n";

а это нет:
$q=@mas_1[2];
print '$q=',$q,"\n\n";
$w=@mas_2[0];
print '$w=',$w,"\n\n";
$pos_=-1;
while(($pos_=index($q,$w,$pos_))>-1)
{
print "найдено в позиции $pos_\n";
}

здесь @mas_1[2] и @mas_2[0] это строки в массивах строк, записанных в 2х соответствующих файлах 
 smile

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


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

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


 




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


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

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