The following code (with comments) is confusing me. Can someone give some explanation please? Specifically the difference between
my @x = <a b>; my $z = @x; and my $z = <a b>; Gabor use v6; # < > creates an array here: my @x = <a b>; say @x.WHICH; # Array|140713422866208 say @x; # a b say @x[0]; # a @x.push('c'); say @x; # a b c # we can assign that array to a scalar variable and it is still and array my $y = @x; say $y.WHICH; # Array|140498399577376 say $y[0]; # a $y.push('d'); say $y; # a b c d # but if we assign the same < > construct directly to a scalar # then we get a Parcel my $z = <a b>; say $z.WHICH; # Parcel|(Str|a)(Str|b) # $z.push('c'); # Cannot call push(Parcel: Str); none of these signatures match: (Any:U \SELF: *@values, *%_) # but if we wrap it in square brackets it creates an array my $w = [<a b>]; say $w.WHICH; # Array|140272330353168 say $w[0]; # a $w.push('c'); say $w; # a b c