$a = "aaata";
$b = "aataa";
$count = ($a ^ $b) =~tr/\0//c;
Run Code Online (Sandbox Code Playgroud)
输出2(因为c
标志执行两次未命中匹配)而不使用c
标志输出是3
(匹配)
这里有什么用的\0
在tr
.没有使用tr
,脚本给出了一些胡言乱语的角色.我不知道这是什么,tr
在这里使用和使用\0
.除此之外,我们使用\0
perl.
通常,由最多三个八进制数字组成的转义序列将插入带有该代码点的字符,因此\40
或\040
生成空格字符,并\0
生成ASCII NUL
代码计算在和之间不同的字符数$a
$b
它对两个字符串执行按位异或.任何相同的字符都会异或为零,从而产生NUL字符.的tr/\0//c
计数的字符得到的字符串,在数量比完全无效其他(因为的/c
改性剂),所以它会返回2在这种情况下,因为两个字符串在第三和第四字符位置不同
倾倒表达式的值$a ^ $b
清楚地表明了这一点
"\0\0\25\25\0"
Run Code Online (Sandbox Code Playgroud)
该tr///
计数两个\25
字符,忽略所有完全无效