in reply to regexp issue: Porting script from 5.6.1 to 5.005_02

I'm confused: the regexp you show should match an empty string. It looks like this:

/ ^ # from the start ( # match ( [\w\d\-\_]+ ) # one or more of [class] [:,] # followed by a delimiter | # or match # nothing # nothing ) # then ( .* ) # match zero or more characters $ # .. until we reach end of string /x

This will match against any string that doesn't have newlines in it, and since undef evaluates to the empty string in a string context, it will match (taking advantage of the "or match ... nothing" option).

I don't have perl5.005_02 here, but I tried this:

perl -wle 'print "ok" if undef =~ /^(([\w\d\-\_]+)[:,]|)(.*)$/'
.. against each of 5.004, 5.004_05, 5.005_03 and 5.6.1 and it printed the expected warning and the expected "ok" in each case.

Can you come up with a short example like mine that prints "ok" on one of those perl builds, but not on the other?

Hugo