在chinaunix上看到用pack/unpack函数,利用模板格式化读取内容,觉得有点意思,于是去看了看perltutpack,很长,没有看完,这里只介绍最基本的场景和用法。
假设你有这样一个文件:
Date |Description | Income |Expenditure
01/28/2001 Flea spray 24.99
01/29/2001 Camel rides to tourists 235.00
文件的每一列都是由固定的长度,比如第一列最长10个字符,第二列最长27个字符,第三列最长7个字符。
你如何能否准确地读取每行的income和expenditure?
可以看到这个例子中,第一行的income为空,expenditure为24.99。你如何区分24.99属于Income还是expenditure?
pack/unpack函数可以帮助解决这个问题,
几点小结:
1. 用 pack将零散的数据组合成一个固定长度的字符床,用unpack将固定长度的字符串按模板分为不同的字符串。
2. ”A“代表任意字符。
3. “x”中unpack函数中表示“跳过一个字节”;在pack函数中表示“引入一个空字节”。
4. 在A或x后可以跟数字,表示A和x作用多少个字符。A12表示任意12个字符,x6表示"跳过6个字节“,或”6个空字节“
5. 除了数字,还可以用”*“表示”匹配右侧所有字符“。