перл. регэксп. ограничить пыл.(подробности внутри)
В твоем бы случае, я бы сначала сделал бы split всего текста на строки данных - и уже среди них искал нужную и извлекал из неё нужные данные.
а без модификатора /s \n - не входит в .
---
...Я работаю антинаучным аферистом...
Тогда хз почему. Может настройки перла какие-то могут иметь место?
Попробуй тесты позапускать, да выявить явно в чем дело.
* ?
#!/usr/bin/perl
use strict;
use warnings;
my $result = "name xxx stuff value 23 stuff
unit: aaa bbb
name yyy stuff value 33 stuff
unit: ccc ddd";
my $aaa = f('aaa');
my $bbb = f('bbb');
my $ccc = f('ccc');
my $ddd = f('ddd');
print"
aaa = '$aaa'
bbb = '$bbb'
ccc = '$ccc'
ddd = '$ddd'
";
sub f
{
my $user = shift;
$result =~ /name.*? value (\d+).*?\nunit:.*?$user/;
return $1;
}
Вот output:
aaa = '23'
bbb = '23'
ccc = '33'
ddd = '33'
Все правильно твое регулярное выражение работает. У тебя строка $result, наверное, другая и дело скорее всего в ней, если у тебя не работает... посмотри сам или покажи реальную строку $result
Точно, всё работает.
ок. значит где-то в другом месте косяк.. буду искать.
Оставить комментарий
Phoenix
значит так.. есть текст из блоковf(aaa) = f(bbb) = 23
f(ccc) = f(ddd) = 33
пишу
на все результаты 23.
что не правильно..
man perlretut - дал именно такие модификаторы(никаких)
может я чего-то не увидел