我对这个测试脚本感到困惑:
#!perl
use strict;
use warnings;
use encoding 'utf8';
use Test::More 'no_plan';
ok('áá' =~ m/á/, 'ok direct match');
my $re = qr{á};
ok('áá' =~ m/$re/, 'ok qr-based match');
like('áá', $re, 'like qr-based match');
三个测试都失败了,但我本来期望
use encoding 'utf8'
会将字面上的áá
和基于qr
的正则表达式升级为utf8字符串,从而使测试通过。如果我删除
use encoding
这行,测试会按预期通过,但我无法弄清楚为什么它们在utf8
模式下会失败。我正在使用Mac OS X(系统版本)上的Perl 5.8.8。
use utf8
,但在去年左右的某个时候,我看到有人说use utf8
已经不可用了,应该使用use encoding 'utf8'
。似乎我需要重新审视整个问题...谢谢。 - melo