use strict; use warnings; use feature qw( :5.10 ); use Data::Dumper;$Data::Dumper::Indent=1; use Carp; use Encode qw( from_to ); use POSIX qw( setlocale LC_CTYPE ); setlocale(LC_CTYPE, "fr_CA.ISO8859-1"); my $file = q{./yard}; open my $IN, '<', $file or croak; while (my $l = <$IN>) { chomp $l; say "1: $l"; my $m = $l; from_to($m, "iso-8859-1", "utf8"); say "2: $m"; say "3: ", xlc($m); } close $IN or croak; sub xlc { my $str = shift; return join q{} => ( map { ucfirst(lc($_)) } ( $str =~ m/(\W+|\w+)/g ) ); };