【发布时间】:2012-01-05 07:31:40
【问题描述】:
我有一个如下所示的序列:
my $seq = "D\IKLR\LK/Q";
我想做的是将序列分解成单个字母。
所以我希望得到:
my $var = ['D', '\', 'I', 'K', 'L', 'R', '\', 'L', 'K','/' ,'Q'];
但是为什么这不行:
my @chars = split(//,$seq);
print Dumper \@chars;
它给了这个:
my $var = ['D', '\\', 'I', 'K', 'L', 'R', '\\', 'L', 'K', 'Q'];
正确的做法是什么?
【问题讨论】:
-
如果在
$seq的赋值中使用双引号,perl 会认为\I和\L是转义符并将它们视为单个字符。由于您没有发生这种情况,因此我假设此数据来自文件句柄。另外,您从数据转储中排除/是否是错字? -
如果你写
my $seq = "D\IKLR\LK/Q";,那么$seq将不包含反斜杠字符。双引号字符串中的反斜杠被解释。"\I"没有明确的含义,但似乎简化为字母"I"。您为$seq显示的字符串有一个反斜杠和一个正斜杠,但您的@chars数组有两个反斜杠。我认为您没有向我们展示您的实际代码。