以处理csv(内容含中文)为例,使用Encode 模块。因为csv如果包含中文,需要转码否则出现分割列的时候会出现错位。
use Encode qw /from_to/;
use Encode::Detect::CJK qw(detect);
sub test_csv {
my $file_name = $_[0];
my $table;
open(CSV, $file_name);
$first_line=1;
@titles = ();
while($_=<CSV>) { #读取一行
if($_ =~ /NULL$/){
next;
} else {
my $charset = detect($_); #检测当前编码格式
from_to($_,$charset,'utf-8'); #编码格式转为utf-8
s/"//g;
my @list = split /;/,$_;
my @tmps = split(/,/, $list[0]); #分割列
if ($first_line) {
$first_line = 0;
@titles = split(/,/, $list[0]);
next;
}
my $var;
my $i;
my $row_count = scalar(@titles);
for ($i = 1; $i < $row_count; $i++) {
$tmps[$i]=~s/[\r\n]//g;#去掉\r\n
$tmps[$i]=~ s/\s\s+//g;#去掉空格
$var->{$titles[$i]} = decode("utf-8",$tmps[$i]); #
}
$table->{$tmps[0]} = $var;
#print"$tmps[0]\n";
}
}
close(CSV);
return $table;
}
相关推荐
官方离线安装包,亲测可用
离线安装包,亲测可用
本文所介绍的是一个Linux环境下的软件包安装过程,主要涉及Perl编程语言的一个模块——Encode-Detect的安装。Encode-Detect模块主要用于检测文本的编码格式。该模块的版本为1.01,发行版本号为13,适用于64位的Linux...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用
To get support for more Chinese or Japanese encodings install the Perl HanExtra or JIS2K Encode packages. --lowmem keep memory footprint low by not creating a hash of all files. This disables ...