Perlでは、use utf8;を宣言することで、ソースコードのコメント・文字列以外の部分に、UTF-8文字列を含めることができる。
UTF-8文字列には、通常プログラムを書く際に用いるASCII文字列(いわゆる半角英数字+半角記号)に加え、日本語の文字列や、絵文字まで含まれる。
以下のPerlプログラムは、正常に動作する。
#!/usr/bin/perl use v5.12; use warnings; use utf8; use Encode; my $neko = 'cat'; my $猫 = 'cat'; $🐱 = 'cat'; # my $🐱 = 'cat'; だとCan't use global $🐱 in "my" というエラーになる say $neko; say $猫; say encode('utf-8', $🐱); # say $🐱; だと Wide character in print というエラーになる
ちなみに、PHPの場合:
<?php $🐱 = 'cat'; echo $🐱, PHP_EOL;
PHPだと、設定でUTF-8を有効にしていれば、特に問題なく動く。
Perlの方は、バグなのか仕様なのか分からないけど、絵文字を使用すると予測不能な動きをする。