Perl需注意的问题

字符串连接需要用"." 不能用+

如果运用“+”号,Perl会理解成数值运算,做算术运算。
例如:
$a = 12;
$b = '13';
print $a+$b;
输出结果就是 25
print $a.$b;
输出结果为 1213

Perl截取中文字符问题

$str="测试文本";
print substr($str,0,1);

这时候输出了一个"?",这显然不是我们想要的结果。因为在perl中,所有从外部输入的字符串(包括写在程序里的字符串)都会当成字节来处理,"print substr($str,0,1);"这句话只是把"测试文本"的第一个字节取出来,并且用print输出,然而单个字节是不能表示一个中文字符的,所以就输出了"?"。

如果想要上面的程序输出正确的结果,就需要使用decode函数把"测试文本"转换成perl内部字符串,让perl把"测试文本"当成字符串来处理,这样再用"substr($str,0,1);"截取的就不是一个字节,而是一个汉字。


use Encode;
$str=decode('gbk',"测试文本");
print encode('gbk',substr($str,0,1));


Related Articles

Quote Of The Day