Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 其他编程语言 > Perl 一句正则表达式 实现RLE压缩算法的 压缩解压 -- 吹过牛皮之后才发现没有压缩版
【标  题】:Perl 一句正则表达式 实现RLE压缩算法的 压缩解压 -- 吹过牛皮之后才发现没有压缩版
【关键字】:Perl,RLE,--
【来  源】:http://www.cublog.cn/u/8681/showart.php?id=163623

Perl 一句正则表达式 实现RLE压缩算法的 压缩解压 -- 吹过牛皮之后才发现没有压缩版

Your Ad Here 前文中提到要用PERL的一个正则表达式语句实现RLE 的压缩解压, 却只发了一个解压的.
这里是压缩版:
sub rle_compress_re
{
    my $data = shift;
    $$data =~ s{
      #un-repeated byte, up to 128 bytes
      \G(  (?:  (\C)(?!\2)  ){1,128})   |
      #repeated byte, up to 129 bytes
      \G(  (?:  (\C)(?=\4)  ){1,128}\4)
    }
    {
      defined($1)
      ? chr( length($1)-1 )  . $1
      : chr(257-length($3) ) . substr($3,0,1);
    }gosex;


}
一样的gosex, 一样的NB.

测试:
#!/usr/bin/perl -w
#============= 测试 Perl的正则表达式实现RLE压缩解压 ==========
#将第一个参数所代表的文件名, 一下全读到变量 $data中.
open(FILE, "<$ARGV[0]"); binmode(FILE);
undef $/;
$data = <FILE>;
close(FILE);

system("md5sum $ARGV[0]");

#RLE 压缩
rle_compress_re( \$data ); #传递变量的引用, 提高效率
#RLE 解压, 为防止负负得正这种以错纠错的行为, 解压要使用非正则表达式, 甚至非
#PERL的版本来验证.
rle_uncompress_re( \$data ); #传递变量的引用, 提高效率

open(FILE, ">output.dat"); binmode(FILE);
print FILE $data;
close(FILE);
system("md5sum output.dat"); #行不行就看这个MD5 和跟前面的那个是否一样了

Ant入门-配置和使用:【上一篇】
te:【下一篇】
【相关文章】
  • Lua入门系列----pil学习笔记之Getting Start
  • VB打包工具--- setup factory 7 使用总结
  • 《WINDOWS核心编程》读书笔记--第6章:线程的基础知识
  • Distributed Application --- Start with Database Connection Pool
  • CCNP学习笔记BSCI之--RIP协议篇
  • Perl 一句正则表达式 实现RLE压缩算法的 压缩解压
  • EVC绘制位图--BeginPaint()与GetDC()的区别
  • Best Practice -- Programming Part
  • 带括号的加减乘除--递规算法.(java.)
  • Apress新书迎接JDK 6.0(1)--总述及XML的新标准
  • 【随机文章】
  • VPN相关协议与草案
  • 关于DWR2.0的配置问题
  • 用Pollinate可视化开发页面流(JPF)
  • UNIX ---1
  • 一道面试题及其解题思路(zz)
  • 测试Geoserver1.4.0
  • 老生常谈 os认证和密码文件认证
  • 利用adodb.stream直接下载任何后缀的文件(防盗链)
  • 帧中继专线故障处理经验谈
  • 命运之神在我们手里
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.