- 浏览: 581198 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (200)
- html css (6)
- javascript (11)
- php (6)
- java基础 (18)
- mysql (8)
- ssh (7)
- linux (21)
- 杂想 (1)
- 搜索引擎 (2)
- linux-shell (2)
- perl (61)
- 单元测试 (1)
- jquery (1)
- xml (1)
- 求职招聘 (1)
- 其他 (2)
- 项目工具 (2)
- maven (10)
- ant (1)
- eclipse (3)
- windows (4)
- java (8)
- jsp (1)
- c c++ (7)
- java-web (3)
- 汇编 (1)
- 正则表达式 (2)
- 网络 (1)
- 路由 (1)
- ip (1)
- 测试驱动开发 (1)
- tdd (1)
- vim (1)
- powermock (1)
- junit (1)
- spring (1)
- spring security (1)
- httpclient (1)
- sql (1)
- sqlserver (2)
- 存储过程 (1)
- apache (1)
- Nexus (1)
- 金融 (1)
- clojure (4)
- 函数式编程 (3)
- 工作 (1)
- git (2)
- java 并发 (1)
- python (1)
- java netty proxy (1)
- scala (1)
最新评论
-
springmvc-freemarker:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
eclipse 配置maven web项目 -
zk1878:
huzhenyu 写道楼主很用心,讲得十分清楚,非常实用!呵呵 ...
eclipse 配置maven web项目 -
huzhenyu:
楼主很用心,讲得十分清楚,非常实用!
eclipse 配置maven web项目 -
宋建勇:
不错,对CountDownLatch了解加深了!
java 多线程 CountDownLatch用法 -
zk1878:
必须的。。。。
perl下载图片
原文:http://hi.baidu.com/mylongwalk/blog/item/004df0220cc2cc4dad34dea0.html
perl的Tie::File模块真是与乎寻常的强大
Tie::File:
Tie::File - Access the lines of a disk file via a Perl array: 将一个file和array tie起来,对array所做的任何操作都会同步反映到file上,等同于对文件进行了操作。
注意:Tie::File模块不适用于处理存放大量短小记录的文件!!
这里所说的记录型文件,是指文件读写时的最小单位是记录而不是通常的字节。数据记录之间以记录分隔符隔开,故要求文件有效数据的内容不会与记录分隔符相混淆。通常我们使用的文本文件就属于记录型文件,它的记录分隔符在win32下是\r\n序列,在unix下则是\n。对于记录型文件,Perl提供了一个模块Tie::File将文件同一个数组关联起来,对数组进行操作就等价于对文件本身进行操作,数组内容所有的改变都会立即反映在文件中。更令人兴奋的是同文件相关的这个数组是一个“虚拟”数组,本身并不会占用多少空间,因此即使操作数以GB计的文件也十分轻松。其用法如下:
use strict;
use warnings;
use Tie::File;
my @lines; # 文件关联数组
my $filename='./test.dat'; # 记录文件名
tie(@lines,'Tie::File',$filename) or die; # 将记录文件同数组关联,默认为文本型文件
# 记录分隔符使用"\r\n"或"\n"
$lines[0]="Hello"; # 这里对数组内容的操作就直接反映到文件中去了
$lines[1]="world!"; # 增加一条新记录
splice(@lines,1,0,"insert another line"); # 在老记录之间插入记录
delete $lines[0]; # 删除记录
untie(@lines); # 解除文件同数组的关联
这就是对文本文件的一系列操作,可以看出该模块使用起来十分灵活简便。除此之外模块还有几个选项可以调整细节行为,常用选项如下:
1. recsep
类似于$/, 用来指定记录分隔符,分隔符可以是任意字符串。每条记录都不包含分隔符,但写入文件时都会自动附加上一个记录分隔符,如果记录内容本身已经附加有分隔符则会忽略。读出记录内容时会自动去除分隔符(由autochomp选项控制)。默认的记录分隔符是"\r\n"或"\n",我们可以任意改变它以适应自己的需求。唯一需要注意的地方就是记录分隔符不可与有效数据内容混淆,也不能为空(没有记录分隔符就谈不上记录型文件了)。
tie (@array, 'Tie::File', $file, recsep => 'es');
This says that records are delimited by the string es
. If the file contained the following data:
Curse these pesky flies!\n
then the @array
would appear to have four elements:
1."Curse th"
2 ."e p"
3."ky fli"
4."!\n"
2. autochomp
指定读出记录时是否去除记录分隔符,(默认)为真值时会自动去除分隔符。如:
Normally, array elements have the record separator removed, so that if the file contains the text
- Gold
- Frankincense
- Myrrh
the tied array will appear to contain ("Gold", "Frankincense", "Myrrh")(不包括换行)
If you set autochomp
to a false value, the record separator will not be removed. If the file above was tied with
- tie (@gifts, "Tie::File", $gifts, autochomp => 0);
then the array @gifts
would appear to contain ("Gold\n", "Frankincense\n", "Myrrh\n")
, or (on Win32 systems) ("Gold\r\n", "Frankincense\r\n", "Myrrh\r\n")
.
3. splice
spice是perl命令,不是此模块所独有,用法如下:
splice ARRAY,OFFSET,LENGTH,LIST
splice ARRAY,OFFSET,LENGTH
splice ARRAY,OFFSET
splice ARRAY
从第offset个元素开始,删除长度为length个元素,若list存在,则 用list代替删除掉的数据(若lenght=0,则变成了添加)。若省略length,则删除从offset开始的所有数据。offset和 length都省略则删除所有元素。
除此之外还有mode、memory、dw_size等选项。另外在指定选项时可以在选项前加一个“-”号,即tie(...,-recsep=& gt;...)和tie(...,recsep=>...)这两种形式是等价的。对该模块的进一步说明请参考perldoc Tie::File
http://perldoc.perl.org/Tie/File.html
发表评论
-
perl http模块总结
2013-04-04 23:51 5790perl发送http请求主要有 LWP,UserAgent ... -
perl json
2013-04-03 20:51 4123http://search.cpan.org/~makam ... -
perl xml json
2012-09-14 19:52 1301use XML::XML2JSON; ... -
perl源文件编码类型导致乱码问题
2012-09-11 09:28 2326$str = '中国'; chdir 'E:\jo ... -
perl 解析html, 自己写的几个比较常用方法
2012-09-04 20:56 7210perl解析html, 比较常用的模块是 HTML::Tree ... -
perl多进程示例
2012-08-17 15:33 1947以下例子,在主进程生成3个子进程,然后再收割每个子进程,防 ... -
一段实用的perl脚本
2012-08-15 20:53 2371下面的脚本实现了在命令行直接执行perl语句或是执行 ... -
perl发送http请求,easy之极
2012-08-09 23:21 15995perl 发送http 非常之简单,发送get请求 只一 ... -
perl 操作mysql
2012-04-27 07:57 1185use DBI; @driver_names = ... -
Perl 中的线程
2012-03-31 22:19 1483原文:http://www.ibm.com/developer ... -
perl smtp 发送邮件
2012-03-20 23:44 4990原文:http://blog.chinaunix.net/ui ... -
perl开启并关闭w32进程
2012-03-05 16:31 1985perl是个很强大的脚本语言,cpan包罗万象的 ... -
perl发送http请求
2012-02-16 17:51 5217下面是一段perl发送http请求的代码,设置了请求头,表单参 ... -
perl对windows的进程的一些常用操作
2012-02-16 17:52 20671、获取所有正在运行的进程,用到了cpan的Win32::Pr ... -
perl查看已经安装的模块
2012-02-16 17:53 1409use ExtUtils::Installed; my ... -
在Perl调用C/C++代码/动态链接库
2012-02-10 17:46 6421原文http://manew.org/?p=62 perl想 ... -
perl 剪贴板操作
2012-02-09 14:05 1665以下代码设置剪贴板内容为 hello world,然后读取剪贴 ... -
perl 文件目录的创建删除拷贝
2012-01-11 18:03 5285以下三个是核心包提供的 1 unlink @files ... -
perl正则表达式中该注意的一个问题
2011-12-29 00:06 1218请看以下例子 代码1 $a='abc123EEE11 ... -
perl 目录遍历
2011-12-16 10:27 2396使用perl的 File::Find模块,目录遍历将会很简单, ...
相关推荐
[Perl文]IO::Socket简介 ''''''''''''''''''' new()方法: SOCKET对象变量=IO::Socket::INET->new(SOCKET变量值); 实例: $sock=IO::Socket::INET->new('192.168.1.2:23'); 讲解: 所有的PERL对象编程都把对象...
cpanm是一种比cpan更简洁的perl模块安装工具。 cpanm本身其实只是一个可执行文件而已。将它下载到 bin 目录,然后添加执行权限就可以用了。 使用时,参数名直接为模块名称即可。如: $ sudo cpanm CGI::Session 可以...
Perl中的XML::Simple模块是Perl社区广泛使用的XML解析器,尤其适合处理小型或结构简单的XML文档。这个模块的名称虽然包含“Simple”,但它实际上提供了一种简洁的接口,用于将XML数据转换为Perl数据结构,反之亦然。...
如果在windows下用perl编译模块时,需要使用dmake。 perl MakeFile.pl dmake dmake test dmake install 如果使用MinGw,需要把dmake放到MinGw的bin目录下。
log4perl.appender.FileAppender = Log::Log4perl::Appender::File log4perl.appender.FileAppender.filename = app.log log4perl.appender.FileAppender.layout = Log::Log4perl::Layout::PatternLayout log4perl....
在Perl编程环境中,模块是可重复使用代码的封装单元,它们提供特定的功能,方便开发者进行程序构建。然而,随着时间的推移,某些模块可能不再需要或者需要更新版本,这时就需要进行卸载。本文将深入探讨如何干净地...
CentOS解决错误:Requires: perl(Class::MethodMaker)。CnetOS中MySQL集群问题。
### Linux上安装Perl模块方法详解 #### 一、引言 在Linux环境下处理大量数据时,Perl语言因其强大的文本处理能力和脚本编写能力而被广泛采用。然而,要充分利用Perl的强大功能,安装必要的Perl模块至关重要。本文...
Perl 语言的主要内容包括变量类型、控制结构、子程序、文件的操作、正则表达式、智能匹配、字符串的操作、输入与输出、进程的管理、第三方模块的使用等。 第一个 Perl 程序 用户可以使用 Perl 语言编写第一个程序...
Perl SVG模块是一个强大的Perl编程库,它允许开发者使用Perl语言创建和操纵Scalable Vector Graphics (SVG)格式的图形。SVG是一种基于XML的矢量图像标准,广泛应用于网页设计、数据可视化、科学图表以及生物信息学等...
Perl 模块 - Devel::Module::Trace Devel::Module::Trace 是一个 perl 模块,它打印所有使用和需要的模块及其来源和经过时间的表格。 这有助于拆除缓慢的模块并有助于优化模块的总体使用。 该模块使用 Time::Hires...
`Win32-GUI`模块是Perl社区为Windows平台开发的一个开源库,它使得Perl程序员能够轻松地创建各种窗口、控件和事件处理程序,而无需深入学习底层的Windows编程技术。`Win32-GUI`提供了包括按钮、文本框、列表视图、...
在实际应用中,Perl模块通常通过CPAN(Comprehensive Perl Archive Network)获取,这是一个庞大的Perl模块仓库,包含了数千个不同功能的模块,覆盖了各种各样的编程需求。 使用这些模块,Perl程序员可以构建功能...
以上仅是Perl众多模块中的冰山一角,但通过这些例子我们可以看到,Perl的强大之处在于它丰富的第三方模块生态系统,几乎涵盖了所有的开发需求。希望本文能够帮助读者更好地理解和使用这些模块,提高开发效率。
官方离线安装包,亲测可用
它支持各种模块以增加功能或改变其行为,mod_perl就是其中之一。 3. **mod_perl模块**:mod_perl是Apache的一个模块,它将Perl代码编译成共享内存的一部分,使得Apache可以直接执行Perl代码,而非通过CGI接口。这样...
Tie::Persistent.pm模块就是为了解决这个问题而诞生的,它提供了一种简单、直观的方式来实现Perl变量的数据持久化。作为开源软件,Tie::Persistent.pm允许开发者自由地使用、修改和分发,大大推动了Perl社区的创新和...
File :: Next是用于查找文件的基于迭代器的模块。 它是轻量级的,没有依赖项,可以在污点模式下运行,并且可以使您的程序更直接地控制文件选择。 它主要取自Mark Jason Dominus的出色著作 。 安装 要安装此模块,...
在Bugzilla 3.2.2版本中,为了正常运行,它依赖于一系列Perl模块。Perl是一种广泛用于系统管理和网络编程的脚本语言,它的模块生态丰富,为Bugzilla提供了强大的功能支持。 首先,我们需要了解Perl模块的概念。Perl...