Speaking just for my own preferences, I very much like having sigils
to differentiate variables from routines, that is, a $ prefix versus
either & or no prefix. However, I generally do *not* like the @ and
% prefixes. They seem somewhat contrived so to cover very specific
variable types while other very similar types don't have them, eg
built-in arrays versus some array-like other container type.
And so in my own coding style I use $ for all arrays and hashes too,
so all my variables are $. This is done consistently in both Perl 5
and Perl 6. The only place a @ or % appears is when I have to say
@{} or %{}, and even then it is mainly just Perl 5 that requires
this, such as in foreach or map. Perl 6 is an improvement over Perl
5 in that it is easier to use $ for arrays and hashes too without
making code more verbose as a result.
I would be happy if Perl 6 dropped the @ and % for arrays and hashes,
using just $ instead; however, I won't necessarily request this as
the semantics of @ and % can be useful (assignment copy by value
rather than by reference), and I can choose to not use them if I
don't want to (TIMTOADY and all that).
On the other hand, unless this steps on something, I could suggest
dropping the @ and % anyway, so we have $array and $hash, and then we
could instead use the @ and % sigils as a prefix to indicate in that
case that we want them to copy by value. For example:
my $foo = [23, 434, 6];
my $bar;
$bar = $foo; # copy by reference
@$bar = @$foo; # copy by value
Actually, I think that would be a vast improvement, as we could then
use the @ prefix with any collection type as short-hand to say that =
is copy by value.
I also don't think the language would feel any less Perlish with this change.
-- Darren Duncan