为什么“\ t”被计为字符而“\ l”不算作字符。两者都是特殊变量?

时间:2015-11-16 06:53:21

标签: perl scalar

#!usr/bin/perl

use warnings;
use strict;

$\="\n";
my $var='WELCOME TO PERL';
$var='HI ' . $var;
print "$var";
print length $var;

$var="\t" . $var;
print $var;
print length $var;

$var="\l" . $var;
print $var;
print length $var;

输出:

HI WELCOME TO PERL
18
    HI WELCOME TO PERL
19
    HI WELCOME TO PERL
19

这里当我将\t连接到字符串计数时加1,但是当我连接\l时,计数不会递增。它们之间有什么区别。

实际上我需要的是将\L放在字符串的开头。所以我不需要在print中使用它。

1 个答案:

答案 0 :(得分:4)

请参阅此简单测试:perl -wle '$var="\lA"; print length $var; print $var;'

秘诀是\l是一个转义序列,它会产生下一个字符的小写。

TBH,我发现奇怪的是它在字符串插值中起作用而不仅仅在RE中。

<强>更新

如果您将代码从"\l"更改为'\l',则会按预期插入两个字符。