$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.除此之外,我们使用\0perl.
通常,由最多三个八进制数字组成的转义序列将插入带有该代码点的字符,因此\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字符,忽略所有完全无效