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

Perl 为什么“\t”算作字符而“\l”不算作字符。当两者都是特殊变量时?,perl,scalar,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; 这里,当我将\t连接到字符串

输出:

#!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;
这里,当我将\t连接到字符串时,计数会增加1,但当我连接到\l时,计数不会增加。他们之间有什么区别

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

看看这个简单的测试:perl-wle'$var=\lA;打印长度$var;打印$var;'

秘密在于,这是一个转义序列,可以生成下一个字符的小写字母

TBH,我觉得奇怪的是,它的函数是字符串插值,而不仅仅是REs

更新

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

请参阅此简单测试:perl-wle'$var=\lA;打印长度$var;打印$var;'

秘密在于,这是一个转义序列,可以生成下一个字符的小写字母

TBH,我觉得奇怪的是,它的函数是字符串插值,而不仅仅是REs

更新


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

我知道\t是一个制表符,应该转义什么?我知道\t是一个制表符,什么是转义?Re:我发现它在字符串插值中而不是在REs中起作用很奇怪。=>这是在双引号字符串中实现转义的内部函数。\l在正则表达式中不起作用-只在双引号字符串中起作用。如果考虑替换//,则首先将左侧作为双引号字符串处理,包括插入变量和考虑转义(如\l、\Q等),然后将其编译为正则表达式,此时\l已消失。右侧-替换文本-只是一个双引号字符串anyway@ikegami:因为正如我所说,模式首先被处理为双引号字符串。事实上,如果它确实对模式有影响,那么您会看到?^u:\lA@ikegami:如果唯一的区别是\t被执行,那么它是一个很小的字符串…请注意,perl-E说qr'\lA'给出了一个糟糕的字符串化。我有点想把它加进去…Re:我发现它在字符串插值中而不是在REs中起作用很奇怪。=>这是在双引号字符串中实现转义的内部函数。\l在正则表达式中不起作用-只在双引号字符串中起作用。如果考虑替换//,则首先将左侧作为双引号字符串处理,包括插入变量和考虑转义(如\l、\Q等),然后将其编译为正则表达式,此时\l已消失。右侧-替换文本-只是一个双引号字符串anyway@ikegami:因为正如我所说,模式首先被处理为双引号字符串。事实上,如果它确实对模式有影响,那么您会看到?^u:\lA@ikegami:如果唯一的区别是\t被执行,那么它是一个很小的字符串…请注意,perl-E说qr'\lA'给出了一个糟糕的字符串化。我有点想把它弄坏…
HI WELCOME TO PERL
18
    HI WELCOME TO PERL
19
    HI WELCOME TO PERL
19