andrew@fgh.fgh.oz (Andrew Buchanan) (06/13/90)
The following script causes perl to take a very, very long time:
("A" x 10) =~ /^.{0,50}\s/;
I don't think it's an infinite loop, because if I make the
string smaller (eg 3) or the regexp repetition smaller (eg 10),
it does complete. In place of the \s it seems that any
value that fails and is not constant causes the problem, e.g.
\W, [BC] &c.
In my original script I worked around the problem by avoiding
the regexp altogether, but I am puzzled why it is taking so long.
I am only slightly familiar with regexp operation, so I may be
missing something obvious. However, an analogous sed script
such as
att> echo ' :\nAAAAAAAAAA' | sed -n -e '/^.\{0,50\}[ ]/p'
:
att>
completes in normal time.
I am running
$Header: perly.c,v 3.0.1.5 90/03/27 16:20:57 lwall Locked $
Patch level: 18
on a Pyramid 9810. (The problem happens in both the ucb [Berkeley]
and att [System V] compiled versions of perl).
--
Andrew Buchanan | andrew@fgh.fgh.oz.au
FGH Decision Support Systems Pty Ltd | ..!uunet!fgh.fgh.oz.au!andrew