No such thing as a small change | |
PerlMonks |
Re^3: Hash Curious (context/dereferencing/backwards compatible)by LanX (Saint) |
on Oct 16, 2021 at 10:33 UTC ( [id://11137625]=note: print w/replies, xml ) | Need Help?? |
The big dilemma with Perl6 was that it kept no backwards compatibility with Perl5. ... sigh ... The ultimate reason for that sigil table for P5 is context propagation Take §{EXPR} = EXPR2 with § as first sigil
BUT this is one of the biggest obstacle for backwards compatibility. The table is also "cheating" in the scalar column, because %$ and @$ denotes de-referencing . Which is indeed a PITA in Perl5 and IMHO one of the top problems for beginners. E.g. in order to pass an array to a sub we have to reference
but inside the sub we need to start fiddling with array-refs and a new syntax with plenty of arrows
I would rather have preferred a new lexical pragma in Perl5 to automatically alias "$ref-form" with "@list-form of a variable. I.e. the declaration my @arr automatically implies $arr =\@arr and (somehow) vice versa. Like this $arr[0] and $arr->[0] would lead to the same result and many arrows could be saved. This would come with the cost of fusing the namespace for scalars and arrays, but
Perl inherited this dilemma from Perl4 where the list form of @arr was very convenient, but most other dynamic languages I know operate with the ref form (without sigil) by default. arr=[] is a ref/obj in JS, Python and Ruby If these languages need the flattened list form of arr they apply a method or a postfix syntax. You could say everything is a scalar there.
Cheers Rolf
In Section
Seekers of Perl Wisdom
|
|