LINUX.ORG.RU

perl нид хелп


0

0

когда я юзаю text-balanced я не могу сделать вот так..
($one) = extract_bracketed($str,'{}','(?s).*?abc\s*');
if($str=~/xyz/){
print $str
}
печатается все содержимое $str, а по идее должны толко строчки с xyz, подскажите как можно получить еще одно значение из $str?

anonymous

Ответ на: комментарий от vilfred

или наверное даже можно print while $str=~/xyz/ig;

по видимому у тебя $str формируется будучи многострочной в смысле перевода каретки \n

Переопределить перевод каретки можно изменив переменную $/='\n'

vilfred ☆☆
()
Ответ на: комментарий от vilfred

->print $_,"\n" while $str=~/xyz/ig;
а почему $_?
у меня значение в $str, а если заменить на $str, то печатается все что есть в $str.

anonymous
()
Ответ на: комментарий от anonymous

> а почему $_?

потому что конструктивно язык перл сохраняет результат последнего выражения (в данном случае $str=~/xyz/ig ) в $_

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

->потому что конструктивно язык перл сохраняет результат последнего выражения (в данном случае $str=~/xyz/ig ) в $_
похоже при text-balanced, нет, просто пустные новые строчки печатаются, но их колличество равно колличеству совпадений /xyz/

anonymous
()
Ответ на: комментарий от anonymous

значит тогда смотри что такое функция extract_bracketed там может быть отрицание какоеннить типа !extract_bracketed(); или extract_bracketed(!чето там внутри скобок)...

vilfred ☆☆
()
Ответ на: комментарий от vilfred

->значит тогда смотри что такое функция extract_bracketed там может быть отрицание какоеннить типа !extract_bracketed(); или extract_bracketed(!чето там внутри скобок)...
смотрел, поэтому и спросил, может еще как-нибуть можно?
или передать переменную в другую, но если просто
$str1=$str
то ноавя наследует от предидущей.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.