Vi запутался с моим perl-скриптом! В то время как {
в конце кода не соответствует ни одной из закрывающих фигурных скобок, {
s в конце строк 27 и 28 соответствует одному и тому же }
в 30.
Вот видео с экрана того, как Vi обрабатывает поведение моего скрипта.
(источник: abbasinasab.com)
Вот также мой фрагмент кода, вызывающий проблемы:
#CODE
while ($data =~ m{
^foo_\s+ $X \s* \{
( (?: [^{}]+ | \{(?1)\} )* )
\}
}mgx)
{
my $Y = $1;
next if $Y !~ m{
bar_$Z \s* \{
( (?: [^{}]+ | \{(?1)\} )*? )
\}
}mx;
my $DO = $1;
#CODE
}
Мои вопросы:
- Как и почему Vi не может справиться с фигурными скобками в этой ситуации.
- Как я могу переписать свой уродливо написанный фрагмент кода, чтобы избежать этой путаницы для Vi.
m
. Например:seq 350 | perl -lanE 'say $_ if m 1331'
, но рекомендуется использовать только знаки препинания, например:/
@
или пары()
[]
<>
и тому подобное. - person jm666   schedule 02.09.2014/gmx
(особенно с модификатором/x
). - person Jonathan Leffler   schedule 02.09.2014