Nicholas Clark wrote:
[...]
> And what happens if I write
>
> %hash4 = ("Something", "mixing", pairs => and, "scalars");
1 2 3 4 5
Perl5 says "Odd number of elements in hash assignment at -e line 1."
And Perl6 should, too.
IMHO, your example isn't too good anyway. Something involving a pair at the
place where a Perl5-like behaviour would expect to set a value would be even
a bit more evil.
Let's use this example:
%h = ( 'a', pk => 'pv', 'b', 'c');
Other than that, some possible behaviours I could think of would be:
- If the list contains scalars, consider pairs as two scalars (bad).
Resulting hash (key=>value)
a => pk
pv => b
c => undef
- If the list contains pairs, assign the pairs, then do the Perl5-thing of
alternatingly assigning keys and values from the scalars.
a => b
pk => pv
c => undef
- Fatal error.
- Wherever a pair starts but a value is expected, add an undef.
a => undef
pk => pv
b => c
I think the latter would be most intuitive. Maybe.
Steffen
--
@n=(544290696690,305106661574,116357),$b=16,@c=' ,JPacehklnorstu'=~
/./g;for$n(@n){map{$h=int$n/$b**$_;$n-=$b**$_*$h;$c[@c]=$h}c(0..9);
push@p,map{$c[$_]}@c[c($b..$#c)];$#c=$b-1}print@p;sub'c{reverse @_}