Vidím, že používáte dlouhé kódy znaků, takže problém asi bude v interní reprezentaci řetězce.
Aby to fungovalo, Perl musí chápat řetězec jako unicode, ne posloupnost bytů nějakého kódování. V jakém kódování je řetězec, který posíláte do toho regexpu?
Vaší pozornosti doporučuji modul utf8. Zkuste před použitím regexpu zavolat na řetězci
utf8::decode($string); To změní jeho interní reprezentaci.