And given how strong the tools in Perl are for working with hashes and arrays (grep, map, join, splice/unsplice, shift/unshift, sort, etc.) it really is a pain point.
Not really:
my $ref = [qw/foo bar baz/];
my $ref2 = [map { uc } @$ref]; # [qw/FOO BAR BAZ/]
References, if anything, are just slightly ugly. I could live without non-reference values, however. They're basically useless, but sometimes they make the program more concise.I think everyone realizes this mistake, however, and Perl6 only has types that behave like references:
my @foo = split '/', "foo/bar/baz";
function(@foo, 'hello');
sub function(@foo, $string){ ... }