|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 19 Dec 2001 13:29:21 To : "Alexander A. Kaluzhny" Subject : Re: [q] Regexp to func -------------------------------------------------------------------------------- Здравствуй, Alexander A. Kaluzhny. >> AAK> Это все работает великолепно, если вызывать следующим образом: >> AAK> my_func('^dummy_value$'); >> AAK> Hо я бы хотел немного большего, а именно, например так: >> AAK> my_func(s/^dummy/foo/g); >> AAK> но так, чтобы при вызове не резался $_. Если кто может что-нибудь >> AAK> подсказать, буду весьма благодарен. AAK> > AAK> > Гм, что-то ты невнятно свои мысли высказываешь. Собственно говоря, тебе AAK> что, AAK> > s///-выражение передать в функцию надо? AAK> Hаверное (тоже не совсем внятно =) ). Хотелось бы уточнить, может есть AAK> способ передать s///-выражение и сделать остальное по аналогии? AAK> Мне хочется передать все выражение в явном виде без всяких там кавычек, и AAK> вызвать его при сопоставлении с моей переменной. Т.е. AAK> my_func(s/^dummy/foo/g); #Здесь $_ не сопоставляется, т.е. остается как AAK> есть AAK> sub my_func(...) AAK> { AAK> $my_var = ....; # тут сопоставляем с моей переменной (не знаю как) AAK> } AAK> Другими словами мне нужно передать само выражение а не результат AAK> сопоставления. AAK> > AAK> > eval AAK> > AAK> > Пока.. Ик :) AAK> Hасколько я понимаю, чтобы пользоваться eval-ом, то нужно все выражение AAK> передавать в кавычках, т.е. AAK> my_func('s/^dummy/foo/g'); AAK> и дальше его использовать. AAK> Если я ошибаюсь, то можно ли привести мааахонький примерчик? AAK> Меня больше интересует как это сделано в split(), AAK> Т.е. я могу сделать следующее: AAK> ($do,$my)=split(/mm/, 'dummmy'); #Тут режется 'dummmy' Так, кажется, не получится - split все-таки слишком специален. С прототипированием можно сделать вещь вроде grep, но только с блоком - выражение таки будет вычислено до передачи. -- Artem Chuprina Communiware.net RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/358.49, ICQ: 13038757 Отправлено через сервер Talk.Ru - http://www.talk.ru --- ifmail v.2.15dev5 * Origin: Talk.Ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/63599bcc2949.html, оценка из 5, голосов 10
|