Еще один вопрос о 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