为什么perls长度函数会为同一输入返回不同的结果?

eri*_*ckb 4 perl

我很困惑这个perl JAPH是如何工作的:

perl -e 'print chr(length($_)/3) for @ARGV' Perl?????????????????????????????????????????????????????????????????????????! Perl????????????????????????????????????????????????????????????????????????????????????????????????????????????????????! Perl??????????????????????????????????????????????????????????????????????????????????????????????????????????????????! Perl???????????????????????????????????????????????????????????????????????????????????????????????????????????????????! Perl???????????????????????????????! Perl????????????????????????????????????????????????????????????????????????????????????????????????! Perl?????????????????????????????????????????????????????????????????????????????????????????????????????????????! Perl??????????????????????????????????????????????????????????????????????????????????????????????????????????????! Perl???????????????????????????????????????????????????????????????????????????????????????????????????????????????????! Perl???????????????????????????????????????????????????????????????????????????????????????????????????????! Perl????????????????????????????????????????????????????????????????????????????????????????????????????! Perl?????????????????????????????????????????????????????????????????????????????????????????????????????????????????! Perl???????????????????????????????! Perl???????????????????????????????????????????????????????????????????????????????! Perl????????????????????????????????????????????????????????????????????????????????????????????????????! Perl?????????????????????????????????????????????????????????????????????????????????????????????????????????????????! Perl???????????????????????????????????????????????????????????????????????????????????????????????????????????! Perl???????????????????????????????! Perl???????????????????????????????????????????????????????????????????????????????????????????????????????! Perl????????????????????????????????????????????????????????????????????????????????????????????????! Perl??????????????????????????????????????????????????????????????????????????????????????????????????! Perl??????????????????????????????????????????????????????????????????????????????????????????????????????????! Perl????????????????????????????????????????????????????????????????????????????????????????????????????! Perl?????????????????????????????????????????????????????????????????????????????????????????????????????????????????! Perl???????????????????????????????????????????!
Run Code Online (Sandbox Code Playgroud)

为什么length返回不同的输出看起来像同一个参数?(Perl的!)

小智 6

将此命令复制并粘贴到文本编辑器中(在我的例子中,它是vim),你会发现"Perl"和"!"之间有很多<200b>字符.

它被称为"ZERO WIDTH SPACE",它是UNICODE角色.Unicode字符'ZERO WIDTH SPACE'


rig*_*old 5

这些实际上是所有不同的字符串,所有字符串都包含不可见的字符.如果在十六进制编辑器中打开文本,则可以看到它:

在此输入图像描述