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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> регулярные выражения в PERL 
:(
    Опции темы
scion
Дата 13.5.2009, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



вопрос, есть текстовый файлик вида:

a:2:{s:5:"login";s:5:"admin";s:3:"pwd";s:6:"tester";}
.....
...

как мине в переменную из этой строчки вытащить login и pwd. (в данном примере admin и tester )

спасибо за помощь..

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


Опытный
**


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

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



Код

my $str = 'a:2:{s:5:"login";s:5:"admin";s:3:"pwd";s:6:"tester";}';
my ($login, $pass) = ($str =~ /"login"[^"]*?"(\w+)".*?"pwd"[^"]*?"(\w+)"/);



--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
arto
Дата 13.5.2009, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



# perl -le 'print join "\n",(split "\"",$ARGV[0])[3,7]' 'a:2:{s:5:"login";s:5:"admin";s:3:"pwd";s:6:"tester";}'
admin
tester
#
PM MAIL ICQ   Вверх
scion
Дата 13.5.2009, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



спасибо мужики!
то что надо!

PM MAIL   Вверх
scion
Дата 15.5.2009, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



можно ещё вопрос, как из массива имён вытащить только по одному имени, даже если он повторяется
пример
@str= 'dima vase igor dima lese vase';

результат должен быть: 'dima vase igor'

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


Эксперт
***


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

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



hash?
PM MAIL ICQ   Вверх
scion
Дата 15.5.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



нет. просто есть строка вытащенная и файла. в которой повторяются слова. надо что бы все слова были уникальны.

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


Бывалый
*


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

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



массив в хешь = уникальность элементов массива

Код

@a = (1,2,3,1,2,3,1,2,3);
print join(', ',@a)."\n";
my %hash;
foreach my $element (@a) {$hash{$element}++;}
print join(', ',keys %hash)

PM MAIL ICQ   Вверх
scion
Дата 15.5.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(DaemonSuw @ 15.5.2009,  13:58)
массив в хешь = уникальность элементов массива

Код

@a = (1,2,3,1,2,3,1,2,3);
print join(', ',@a)."\n";
my %hash;
foreach my $element (@a) {$hash{$element}++;}
print join(', ',keys %hash)

запустил не работает. =((
1, 2, 3, 1, 2, 3, 1, 2, 3
1, 3, 2

Добавлено через 2 минуты и 10 секунд
упс... у меня что-то с мозгами.... спасибо всё работает.... =))
PM MAIL   Вверх
scion
Дата 15.5.2009, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



почему на работает поиск по массиву:
if (@m =~ /data/) 
или в перле незя так искать в массиве?
PM MAIL   Вверх
DaemonSuw
Дата 15.5.2009, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Так нельзя или через цикл или коротко 

Код

use Data::Dump qw/dump/;
@m = ('data','bugagaga','data12');
print dump(grep(/data/,@m));

PM MAIL ICQ   Вверх
arto
Дата 15.5.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



# perl -le '@ary = qw(a b c d); print "a: ",@ary ~~ m#a#?"yes":"no"; print "e: ",@ary ~~ m#e# ? "yes" : "no"; print "Perl: ",$^V'
a: yes
e: no
Perl: v5.10.0
# 
PM MAIL ICQ   Вверх
DaemonSuw
Дата 15.5.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



arto, "~~" - новые вкусности)... 
забыл совсем(
PM MAIL ICQ   Вверх
scion
Дата 15.5.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



This is perl, v5.8.9 built for i386-freebsd-64int  =((
в портах 10 нету =(

ладно а если циклами...

@a = (1,2,3,1,2,3,1,2,3);
print join(', ',@a)."\n";
my %hash;
foreach my $element (@a) {$hash{$element}++;}
print join(', ',keys %hash)

если я сделаю так:
@mas=join(', ',keys %hash);

то как мине обратится к элементам массива по индексам? $mas[3] - не работает.... ='(


PM MAIL   Вверх
arto
Дата 15.5.2009, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



grep { !$_{$_}++ } split ",","a,b,s,b,a"
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




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


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

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