И ещё один вопрос по перлу (s///)

Модератор: Модераторы разделов

Ответить
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

И ещё один вопрос по перлу

Сообщение t.t »

Как подставить значение переменной в левую часть s/// ? То есть вот сюда: s/$a/$b/ee Никак вспомнить не могу.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
AndyX
Сообщения: 116

Re: И ещё один вопрос по перлу

Сообщение AndyX »

s/\Q$var\E//
кажется так :)
I am in shape. Round is a shape.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: И ещё один вопрос по перлу

Сообщение t.t »

Урра, заработала! :D Пасиба. Склероз, однако.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга
Контактная информация:

Re: И ещё один вопрос по перлу

Сообщение madskull »

Эта... так просто и подставляешь, как и написал: s/$a/$b/
Должно работать.
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: И ещё один вопрос по перлу

Сообщение t.t »

(madskull @ Wednesday, 21 July 2004, 11:07) писал(а):Эта... так просто и подставляешь, как и написал:  s/$a/$b/
Должно работать.
Да не. Так не работает, так бакс -- начало строки, а а -- буква. А вот так, как AndyX написал, работает.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга
Контактная информация:

Re: И ещё один вопрос по перлу

Сообщение madskull »

(t.t @ Wednesday, 21 July 2004, 12:20) писал(а):
(madskull @ Wednesday, 21 July 2004, 11:07) писал(а):Эта... так просто и подставляешь, как и написал:  s/$a/$b/
Должно работать.
Да не. Так не работает, так бакс -- начало строки, а а -- буква. А вот так, как AndyX написал, работает.



Бакс - конец строки и только тогда, когда он последний в регекспе. За исключением одновременного использования флагов mg

Хотя, раз работает - пусть работает.
Где-то видел такое (пишу по памяти):
Q: Как идеологически правильно сделать на Perl то-то и то-то?
A: Идеологически правильно всё, что работает.
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: И ещё один вопрос по перлу

Сообщение t.t »

(madskull @ Wednesday, 21 July 2004, 12:02) писал(а):Бакс - конец строки
Блин, опять всё перепутал. только что, главное, пользовался...
(madskull @ Wednesday, 21 July 2004, 12:02) писал(а):и только тогда, когда он последний в регекспе. За исключением одновременного использования флагов mg
А если не последний? У меня не работало. И по-моему при m без g по логике тоже должно так же быть.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга
Контактная информация:

Re: И ещё один вопрос по перлу

Сообщение madskull »

(t.t @ Wednesday, 21 July 2004, 13:18) писал(а):
(madskull @ Wednesday, 21 July 2004, 12:02) писал(а):Бакс - конец строки
Блин, опять всё перепутал. только что, главное, пользовался...
(madskull @ Wednesday, 21 July 2004, 12:02) писал(а):и только тогда, когда он последний в регекспе. За исключением одновременного использования флагов mg
А если не последний? У меня не работало. И по-моему при m без g по логике тоже должно так же быть.


Ну, в общем так и есть.
Просто я вроде не пользовался этим особо. Если надо конец строки - проще искать \n, чем мучиться с выписыванием поиска по $.
Например, хочу я узнать, есть ли в тексте последняя буква в строке t, после которой, на новой строке, идет символ {:

Код: Выделить всё

print $text=~/t\n\{/m;

а если пытаться использовать что-то типа (первое, что приходит в голову)

Код: Выделить всё

print $text=~/t$\{/m;

перл будет ругаться. Потому что он видит переменную $\ и открытую скобку {
Кстати, я пока и не знаю, можно ли сделать второй вариант, думать лень.
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: И ещё один вопрос по перлу

Сообщение t.t »

(madskull @ Wednesday, 21 July 2004, 12:43) писал(а):
(t.t @ Wednesday, 21 July 2004, 13:18) писал(а):А если не последний? У меня не работало. И по-моему при m без g по логике тоже должно так же быть.
Ну, в общем так и есть.
У меня и без m не работало, что самое интересное.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
AndyX
Сообщения: 116

Re: И ещё один вопрос по перлу

Сообщение AndyX »

Дык $ и \n - не одно и то же...
\n - перевод строки. таких символов в одной строке может быть несколько.
$ - конец строки. ну то есть абсолютный ее конец, дальше некуда ужо :)
^ - начало строки
I am in shape. Round is a shape.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: И ещё один вопрос по перлу

Сообщение t.t »

(AndyX @ Wednesday, 21 July 2004, 16:00) писал(а):Дык $ и \n - не одно и то же...
\n - перевод строки. таких символов в одной строке может быть несколько.
$ - конец строки. ну то есть абсолютный ее конец, дальше некуда ужо :)
^ - начало строки
Вот как раз в том-то и дело, что m. Я уже Мите писал, что этот ключик делает.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: И ещё один вопрос по перлу

Сообщение t.t »

Прошу прадону, не в этой теме писал; вот тут: http://www.linuxforum.ru/index.php?showtopic=1039
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Ответить