The data I'm working with will all be UTF-8, if that makes a difference.
Make sure it's decoded using one or more of the following
use utf8; # Treat the source code as UTF-8
use open ':std', ':locale'; # Treat STD* as per locale
use open ':std', ':encoding(UTF-8)'; # Treat STD* as UTF-8
use open IO => ':encoding(UTF-8)'; # Treat files as UTF-8 by default
open(my $fh, '<:encoding(UTF-8)', $qfn) # Treat a file as UTF-8
utf8::decode(my $text = $encoded_text) # Treat a string as UTF-8
And make sure the string us stored internally as UTF-8.
utf8::upgrade($s); # Use UNICODE semantics
(No need to do use utf8; to use utf8:: functions. use utf8; means the source is in UTF-8.)
If you do those two things, regexp will use UNICODE semantics, so \w and character classes will match accented letters, etc.