我正在尝试在Perl中打印递归数据结构以进行调试.散列哈希阵列的哈希,那种事......
它的一些基本数据元素是可打印的字符串,所以我打印它们.不幸的是,一些基本数据元素是二进制的(想想来自图像文件的内容).他们用乱码搞砸我的调试输出.
我如何检测哪个是哪个,所以我可以避免打印二进制文件,就好像它是一个字符串?
(我知道Data :: Dumper.我的问题不在于我是否应该复制该功能,而是关于如何区分文本和二进制字符串.)
perlrecharclass定义了这些字符类:
任何可打印的字符,不包括空格.任何图形的字符,即可见的字符.此类包含所有字母数字字符和所有标点字符.
任何可打印的角色,包括空格.所有可打印字符,即所有图形字符的集合以及那些不是控件的空白字符.
所以你可以匹配一个没有Unicode属性的字符(注意大写P),例如:
/\P{XPosixPrint}/
Run Code Online (Sandbox Code Playgroud)
我怀疑你真正想要的是检测控制字符,这搞砸了终端(注意小写p):
/\p{XPosixCntrl}/
Run Code Online (Sandbox Code Playgroud)