试图分裂一些数字如下所示:拆分符合特殊字符
$line = "6 13 2";
@a = split(/\s+/, $line)
但没有奏效。原来空白不是简单的白色空间,vim编辑告诉我白色空间实际上有两个字节\ 20 \ 02。
我试图预处理下面的行,但它似乎没有工作。
$line =~ s/\x02//g;
任何想法如何分裂它?
在此先感谢!
试图分裂一些数字如下所示:拆分符合特殊字符
$line = "6 13 2";
@a = split(/\s+/, $line)
但没有奏效。原来空白不是简单的白色空间,vim编辑告诉我白色空间实际上有两个字节\ 20 \ 02。
我试图预处理下面的行,但它似乎没有工作。
$line =~ s/\x02//g;
任何想法如何分裂它?
在此先感谢!
使用Data::Dump
检查你的数据:
use Data::Dump;
$line = "6 13 2";
dd $line;
输出:
pack("H*","36e280823133e28082e2808232")
或许更有帮助:
use Data::Dump;
$line = "6 13 2";
dd split //, $line;
输出:
(
6,
"\xE2",
"\x80",
"\x82",
1,
3,
"\xE2",
"\x80",
"\x82",
"\xE2",
"\x80",
"\x82",
2,
)
看起来你有一些编码问题需要处理。
更改为utf8
:
use strict;
use warnings;
use utf8;
use Data::Dump;
my $line = "6 13 2";
dd split /\s+/, $line;
输出:
(6, 13, 2)
的'$线=〜S/\ X02 // g'为我工作。有没有更多时髦的角色你没有考虑? – 2014-10-03 15:28:16
这是一个Unicode U + 2002(EN SPACE),从UTF-8判断我可以从浏览器中复制并分析。你需要使用一个命名的字符类来分割,我想(并且正在使用Unicode'enabled')。 – 2014-10-03 15:39:43