Re: переменные $1

Slawa Olhovchenkov slw на zxy.spb.ru
Ср Апр 22 21:35:25 UTC 2020


On Thu, Apr 23, 2020 at 12:03:16AM +0300, Maxim Dounin wrote:

> > > Ну да, одно из возможных решений - отучить регулярные выражения в 
> > > map'е трогать $1..$N.  С другой стороны - конфигурации вида
> > > 
> > >     map $uri $foo {
> > >         ~(.+) $1;
> > >     }
> > > 
> > > тоже никто не отменял.
> > 
> > не понимаю возражения.
> > я как раз о том, что внури map $1..$N локальные и не портят $1..$N в
> > других местах. очевидно же, что вот этот $1 _вне_ map никому не нужен.
> > $foo сформировался и никому ничего больше от этого map не требуется.
> 
> Тут есть два нюанса:
> 
> 1. Механизм формирования $1..$N - общий, и если map не трогает 
> $1..$N - то конструкция выше работать не будет.  А делать так, 
> чтобы $1..$N использовали результат выполнения конкретного 
> регулярного выражения, а не просто последнего - логично как раз в 
> рамках rewrite'а, где это конкретное регулярное выражение 
> очевидно.  (Ну то есть в рамках map'а следом тоже встанет вопрос, 
> когда в правой части будет $bar$1, где $bar - ещё один map с 
> регулярным выражением.  Но это, очевидно, надо будет решать так 
> же.)
> 
> 2. Вообще говоря, побочные эффекты от регулярных выражений в map'е 
> быть должны, те же именованные captures - вполне логично 
> использовать и много кто использует на практике.  Использовать 
> побочные эффекты в виде $1..$N - с моей точки зрения странно, но 
> теоретически и это вполне может быть.

я понимаю откуда взялось.
что не отменяет гемороя.

> > > > > https://trac.nginx.org/nginx/ticket/564
> > > > > 
> > > > > Patches are welcome.
> > > > 
> > > > 6 лет...
> > > 
> > > Да, за 6 лет никто не сподобился даже попытаться прислать патч.  
> > > Что как бы позволяет предложить, что - не жмёт.
> > 
> > или никто не может разобраться.
> 
> Это не "или", это именно что "не жмёт".  Затраты на попытаться 
> разобраться - превышают количество проблем, которые создаёт 
> текущее поведение.

ну хоть бы в документацию большими буквами.
я не получил большого гемороя только из-за того что в процессе у меня
и так полный дебаг был включен по другому поводу и я сразу увидел
такой фифект.


Подробная информация о списке рассылки nginx-ru