Perl有任何方法可以确定文本字符串是否包含二进制数据

时间:2014-01-20 08:25:25

标签: string perl binary

嗨,目前我正在开展一个项目,需要从文本文件中读取一些字符串并将这些字符串填充到XML文件中。但是在这个文件中有一些包含二进制数据的行。有没有办法可以检查字符串是否包含二进制数据?

2 个答案:

答案 0 :(得分:0)

在大多数情况下,以下正则表达式可能就足够了:

m{
    [^          # Consider the match a success if each of the following meta-characters do not match
        \w          # Match word
        \d          # Match digit
        \s          # Match whitespace
        [:punct:]   # Match punctuation
    ]
}x

本质上,文本必须至少包含一个不匹配的(二进制)字符:

  • \w - 字
  • \d - 数字
  • \s - space
  • [[:punct:]] - 标点符号

答案 1 :(得分:0)

Perl为此提供了文件测试运算符:-T-B。但请注意,仅仅因为字符串仅限于某组字符并不意味着它就是我们认为的文本。它仍然可能是生成它的二进制数据。