"John W. Krahn" schreef:
> Dr.Ruud wrote:
>> "Chas Owens" schreef:
>>> Dr.Ruud:
>>
>>>> Some evaluation is done first:
>>>>
>>>> perl -Mstrict -MData::Dumper -wle'
>>>> $_ = {0b1_0 => "A", 01_0 => "B", 0x1_0 => "C", 1_0 => "D", _1_0
>>>> => "E", *_ => "F", \_ => "G"};
>>>> print Dumper $_
>>>> '
>>>> $VAR1 = {
>>>> '8' => 'B',
>>>> '_1_0' => 'E',
>>>> '*main::_' => 'F',
>>>> '10' => 'D',
>>>> '16' => 'C',
>>>> 'SCALAR(0x8062850)' => 'G',
>>>> '2' => 'A'
>>>> };
>>> snip
>>>
>>> Nope, it has nothing to do with evaluation.
>>
>> Ah, you misunderstood my "evaluation" which had nothing to do with
>> eval(). Maye I should have used "parsing and compiling".
>>
>>
>>> The trick is that it only
>>> works on barewords (matches /[_A-Za-z][_A-Za-z0-9]*/). 0b1_0 is not
>>> a bareword because it starts with a number. The same goes for 01_0,
>>> 0x1_0, and 1_0. _1_0 works because barewords may start with an
>>> underscore. *_ and \_ are definitely not a barewords since they
>>> contain characters that are not even in the allowed set. Anything
>>> that fails the bareword test is treated as if the '=>' operator
>>> were a normal ',' operator.
>>
>> Yes, "passing the bareword test" is a better phrase than only
>> mentioning "word" characters.
>>
>> There are border cases though:
>>
>> perl -Mstrict -MData::Dumper -wle'
>> $_ = { AB => 1, +AB => 2, -AB => 3 };
>> print Dumper $_
>> '
>> $VAR1 = {
>> '-AB' => 3,
>> 'AB' => 2
>> };
>
> It depends on what you mean by "border case"?
Well, I expected both +AB and -AB would trigger a "bareword" error.
But also like this:
$ perl -Mstrict -wle 'my $x = -XY; print $x'
there is no error message.
With a "+" it is different though:
$ perl -Mstrict -wle 'my $x = +XY; print $x'
Bareword "XY" not allowed while "strict subs" in use at -e line 1.
Execution of -e aborted due to compilation errors.
> Unary plus and unary minus appear to be behaving correctly. :-)
Right. :)
--
Affijn, Ruud
"Gewoon is een tijger."
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/