Hi, And thanks for perl-5.8.4. I've got a problem with Inline-0.44, which got a bit broken with perl-5.8.4 because of /??{...}/ related changes.
$ perl5.8.4 -c Inline-0.44/C/lib/Inline/C/ParseRegExp.pm- Variable "$RE_balanced_brackets" is not imported at (re_eval 1) line 2. Global symbol "$RE_balanced_brackets" requires explicit package name at (re_eval 1) line 2. Compilation failed in regexp at Inline-0.44/C/lib/Inline/C/ParseRegExp.pm- line 25. $ perl5.8.4 -c Inline-0.44/C/lib/Inline/C/ParseRegExp.pm Inline-0.44/C/lib/Inline/C/ParseRegExp.pm syntax OK $ So the following patch seems to solve the problem. --- Inline-0.44/C/lib/Inline/C/ParseRegExp.pm- 2002-11-04 21:39:52 +0000 +++ Inline-0.44/C/lib/Inline/C/ParseRegExp.pm 2004-05-15 17:14:19 +0000 @@ -21,9 +21,9 @@ sub code { my $RE_comment_Cpp = q{(?:\/\*(?:(?!\*\/)[\s\S])*\*\/|\/\/[^\n]*\n)}; my $RE_quoted = (q{(?:(?:\")(?:[^\\\"]*(?:\\.[^\\\"]*)*)(?:\")} .q{|(?:\')(?:[^\\\']*(?:\\.[^\\\']*)*)(?:\'))}); - our $RE_balanced_brackets = + our $RE_balanced_brackets; $RE_balanced_brackets = qr'(?:[{]((?:(?>[^{}]+)|(??{$RE_balanced_brackets}))*)[}])'; - our $RE_balanced_parens = + our $RE_balanced_parens; $RE_balanced_parens = qr'(?:[(]((?:(?>[^()]+)|(??{$RE_balanced_parens}))*)[)])'; # First, we crush out anything potentially confusing. End of patch Things are a bit unclear to me, though. perl584delta(1) says: my $x = qr{ ... (??{ $x }) ... }; will now (correctly) fail under use strict. (As the inner $x is and has always referred to $::x) And according to perlfunc(1), $::x is always equivalent to $main::x. On the other hand, `our $x' declaration is known to create lexically scoped alias to the global variable $x in the current package. So, back to Inline-0.44, `our $RE_balanced_brackets' refers to $Inline::C::ParseRegExp::RE_balanced_brackets, /??{$RE_balanced_brackets}/ refers to $main::RE_balanced_brackets. So does this patch really fixes anything? Why does syntax check pass then? Did I get something wrong? -- Alexey Tourbin ALT Linux Team
pgptibhx94uzR.pgp
Description: PGP signature