Относительно вашего второго примера
Возможно, <->
не работал в используемом вами Rakudo Perl, но это было исправлено в более поздних версиях. (Это было связано с проблемой глубокого анализа, которая требовала лучшего алгоритма сопоставления длинных токенов, чем у нас в то время.)
Относительно вашего третьего примера
Заявление
my $list = <a b c d e f>;
создает $list
как тип данных Seq
, а элементы Seq
считаются неизменяемыми. Что вы действительно хотите, чтобы $list
стал Array
, как в:
my $list = [<a b c d e f>];
С этим последним примером работает, как и ожидалось:
pmichaud@orange:~/rakudo$ cat x.p6
#!perl6
use v6;
my $longest = 3;
my $list = [<a b c d e f>];
for $list.list -> $element is rw {
$element = sprintf "%*.*s", $longest, $longest, $element;
$element.say;
}
pmichaud@orange:~/rakudo$ ./perl6 x.p6
a
b
c
d
e
f
pmichaud@orange:~/rakudo$
Надеюсь, это поможет!
Рт