http://qs321.pair.com?node_id=11101490


in reply to Special character not being captured

> Even substr('Ĉon Flux', 0, 1) returns a space character.

No, it works correctly. But you need to handle the encoding appropriately: tell Perl what encoding is used on input (binmode on *DATA below), what encoding is used in the source code (here utf8), and what encoding is used on output (binmode on *STDOUT). Configure the terminal to use the output encoding.

#!/usr/bin/perl use warnings; use strict; use utf8; use feature qw{ say }; binmode *STDOUT, ':encoding(UTF-8)'; say substr('Ĉon Flux', 0, 1); binmode *DATA, ':encoding(UTF-8)'; say substr <DATA>, 0, 1; __DATA__ Ĉon Flux

Output:

Ĉ Ĉ

map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]