Еще один вопрос о hash в качестве аргумента для trans. В следующем коде простое использование hash дает неверный результат, но замена его на keys и values делает его правильным. Что не так?
my @alph1 = <a+ b+ c+ d+ e+ f+>;
my @alph2 = <A_ B_ C_ D_ E_ F_>;
my %h;
%h{ @alph1 } = @alph2;
my $str = 'a+bc de+f';
my $text = $str.trans(%h);
say $text; # A_BC DE_F (incorrect)
$text = $str.trans(%h.keys => %h.values);
say $text; # A_bc dE_f (correct)
.trans(%h.keys => %h.values)работает? Да, было бы замечательно, если бы.substмог взятьHash. 12.10.2017.substпринялHash, вы бы не знали, в каком порядке будут выполняться замены, поскольку порядок ключей вHashне гарантируется между версиями и, возможно, выполняется. Что касается того, почему.transдействительно принимаетHash, я не уверен, но это похоже на непреднамеренный побочный эффект. 13.10.2017.transберет паруlistsи корректно с ними работает. 13.10.2017