perl 完成一个固定格式的文本文件处理
来源:互联网 发布:网络400电话价格 编辑:程序博客网 时间:2024/05/01 13:35
昨天刚开始学习perl ,真是太有意思了!而且完全用小写字母,爽……开发速度快,而且和C一样很强大,平台移植性好,很多很多优点,最主要是上手快。恐怕这是脚本的优点吧!初学总感觉和shell很像,之后就看出其相同点和不同点了!
后来一老师要求做一个文本文件处理的程序,本想用C 或者C#完成的,但想想之后还要在老师那里装一个很大的运行环境,又加上刚学perl ,很想弄点有意思的东西,于是决定用perl 写。
文件格式大致如下:
08 13 94 52 00 00 00 00 00 00 00 00 00 00 00
08 13 80 85 00 00 00 00 00 00 00 00 00 00 00
08 13 80 85 00 00 00 00 00 00 00 00 00 00 00
08 13 51 55 00 00 00 00 00 00 00 00 00 00 00
……
注:此处已经做了换行显示,文本文件中没有换行符,只有数字和空格
每一个数字 (如 08 , 13 )是一个BCD码, 以每 5 个数字携带一个变量的值,则每15个 数字携带三个变量某一时刻的值。如第一行 08 13 94 52 00 | 00 00 00 00 00 | 00 00 00 00 00 红色的携带变量1,绿色的携带变量2,蓝色的携带变量3。每一变量的解析格式为:前四位BCD码代表数值部分,最后一位代表指数部分,则变量1的值为:0.8139452 * 10^0 .
主要是对数组的操作,思路是将文件打开读入所有的数据,并按‘ ’将数据split 成数组,之后操作这数组吧!
听说perl 实现的功能千差万别, 相同的功能 可能写成 1w行代码 ,也可能写成10w 行代码,就看编程人员的功底。我刚开始学, 也不管了!实现就行。上代码:
#! perl# author : YEZ# date : 2014/12/ 9# describe : convert 15 - bytes data to double string;# Dre@mtech Working Group# open file and get file handler fpopen (fp, $ARGV[0]) || die ("cannot open input file $ARGV[0]!\r\n");# file content;$content = <fp>; # read file content string to varible # $len = @content; # or use scalar (@content)@each = split (/ /,$content);# file array length;$eachlen = @each;# die ("error! file format is invali!!!\r\n") if ($eachlen % 15 != 0);# get start index from @each in each step, to calculate$i = 0; while (# $i != $eachlen$eachlen > 0) {$adjust = 0;while ($each[$adjust] == 0) {$adjust ++;}@frame = @each[($i + $adjust) .. ($i + $adjust + 14)];# start calculate$torsion = (($frame[0].$frame[1].$frame[2].$frame[3]) * (0.1 ** 7)) * (10 ** $frame[4]); # var1$speed = (($frame[5].$frame[6].$frame[7].$frame[8]) * (0.1 ** 7)) * (10 ** $frame[9]); # var2$power = (($frame[10].$frame[11].$frame[12].$frame[13]) * (0.1 ** 7)) * (10 ** $frame[14]); # var 3print ("$torsion $speed $power \r\n"); # output and redirect to a file$i += 15 + $adjust; # move array start index$eachlen -= 15 + $adjust;if ($eachlen - 15 < 15) {$x = 1;}}close (fp); # close file handler
- perl 完成一个固定格式的文本文件处理
- perl简单文本文件处理
- 用标准C++读取固定格式的文本文件
- 用 vim 完成 dos格式文本文件到 linux格式文本文件的转换
- 使用perl脚本语言处理文本文件
- 判断一个文本文件的编码格式
- 判断一个文本文件的编码格式
- 判断一个文本文件的编码格式(转)
- 判断一个文本文件的编码格式
- 判断一个文本文件的编码格式
- 用Perl处理文本文件时遇到的换行问题
- 字符串按固定格式的处理
- 读取固定格式文本文件到二维数组
- python处理文本文件,生成指定格式的文件
- 用Delphi写一个UTF8编码格式的文本文件
- 网络处理中TLV形式的不固定格式匹配
- perl 处理json 数组格式
- C语言简单处理报文中固定格式、固定分隔符的字符串
- CentOS输入正确帐号密码不能登陆解决方法
- 网站加载代码
- 自卫队顶工仍人
- android 修改AVD的存放位置
- Linux C++的多线程编程
- perl 完成一个固定格式的文本文件处理
- Gitolite服务器搭建
- 20款免费备份文件软件
- MySql安装win7 64位
- java学习--for循环两种写法
- 2014年ACM亚洲区域赛2站1铜收场
- MSDN2008中文版下载地址
- nginx和tomcat使用chroot(jail)相关配置
- 配置 Ubuntu 字符界面启动