Perl UTF-8 tips
General
use utf8;
use open qw(:utf8 :std);
Command-line arguments
use Encode;
my $arg1 = decode('utf8', $ARGV[1]);
Berkeley db version 1.x
use DB_File;
use DBM_Filter;
my $db = tie %hash, 'DB_File', $file;
$db->Filter_Push('utf8');
MySQL with DBI
my $dbh = DBI->connect("DBI:mysql:database", "username", "password");
$dbh->{mysql_enable_utf8} = 1;
$dbh->do('set names "UTF8"');
CGI
use Encode;
use CGI;
my $cgi = new CGI;
# decode() is needed for some earlier versions of CGI
my $input = decode('utf8', $cgi->param("input"));
Invalid UTF-8 characters detection
use Encode;
if (eval { decode_utf8($string, Encode::FB_CROAK); 1 }) {
# $string is valid utf8
} else {
# $string is not valid utf8
}