2017-10-11 197 views
2

當我使用一個regex作爲trans第一個參數,它的確定:跨,亂碼,字符類在Perl 6

> say 'abc'.trans(/\w <?before b>/ => 1) 
1bc 

使用hash作爲trans的說法也OK:

> my %h 
> %h{'a'} = '1' 
> say 'abc'.trans(%h) 
1bc 

但是當我嘗試在哈希使用正則表達式,這是行不通的:

> my %h 
> %h{'/\w/'} = '1' 
> say 'abc'.trans(%h) 
abc 

回答

4
'/\w/' 

不是一個正則表達式,它是一個字符串。


my %h{Any};   # make sure it accepts non-Str keys 
%h{/\w/} = 1; 
say 'abc'.trans(%h) 
111 
+0

這就是它!非常感謝! –

+1

@evb還要注意,要製作一個專門且只接受'Regex'作爲鍵類型的散列,您可以聲明:'my%h {Regex}'。 – piojo

+0

@piojo,謝謝,這非常有用! –