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