急!请问如何使用Perl查找文件中的16进制数字?

急!请问如何使用Perl查找文件中的16进制数字?

是一ASN.1文件,现文件可用open(FILE,"filename"打开,也可用$line=<FILE>;读出一行记录(里面包含ASCII码字符和16进制的数字),现在如何找出里面的16进制数字对其修改?(我用printf($line)发现只能显示ACSII字符,而16进制数字无法正常 显示)
另外,为什么我用substr,mid等字符串操作函数时,提示说无此函数?

急着要完成此功能,请指点,不胜感激!
为什么在ChinaUnix上一问再问,这已经是第三次提问请教了,却始终没有人能给我一个需要的解答?
1.沒人會
2.看不懂..沒有例子..沒人知道你的問題長啥樣子..
3.大家都很忙...
4.大家來這都是義務回答的..沒有說你問..就一定要有解答...
    靠自己比較實在...
请将你的文件内容说清楚,最好给个例子."里面包含ASCII码字符和16进制的数字",16进制是什么意思?使用 0x00 表示 还是 binary 数据?
你要把你要问的问题前因后果写清楚呀!
比如原文件的内容,分析后的打印结果!
算了,没人回答我自己来.我用最笨的方法:将所有的数据读到数组中,再将数组转换成16进制,将要查找的字符CLSMS.ACG1051也转换为16进制,全部来比较16进制
這大概是唯一的解法...
m/[a-fA-F0-9]/
呵呵,貌似只能这样做,很少会使用16进制文本。
我记得有种posix的写法,大概是[[: xdigit]]这种格式,这种格式可以用于perl的正则表达式的,你去查查具体的posix标准的元字符

下面是我查到的,你用用吧,估计能用的

posix元字符组:

字符簇:

[[:alpha:]] 任何字母。

[[:digit:]] 任何数字。

[[:alnum:]] 任何字母和数字。

[[:space:]] 任何白字符。

[[:upper:]] 任何大写字母。

[[:lower:]] 任何小写字母。

[[:punct:]] 任何标点符号。

[[: xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。

注意:和x之间没有空格!!

恩,能用,如下

perl -le "$a=xxx;print $a if($a=~/[[: xdigit:]]/);"

perl -le "$a=fff;print $a if($a=~/[[: xdigit:]]/);"

再次申明,:和x之间没有空格,但是这里没空格就成这样了[[digit:]]