- 浏览: 568296 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 5700perl发送http请求主要有 LWP,UserAgent ... -
perl json
2013-04-03 20:51 4071http://search.cpan.org/~makam ... -
perl xml json
2012-09-14 19:52 1227use XML::XML2JSON; ... -
perl源文件编码类型导致乱码问题
2012-09-11 09:28 2205$str = '中国'; chdir 'E:\jo ... -
perl 解析html, 自己写的几个比较常用方法
2012-09-04 20:56 7163perl解析html, 比较常用的模块是 HTML::Tree ... -
perl多进程示例
2012-08-17 15:33 1857以下例子,在主进程生成3个子进程,然后再收割每个子进程,防 ... -
一段实用的perl脚本
2012-08-15 20:53 2277下面的脚本实现了在命令行直接执行perl语句或是执行 ... -
perl发送http请求,easy之极
2012-08-09 23:21 15947perl 发送http 非常之简单,发送get请求 只一 ... -
perl 操作mysql
2012-04-27 07:57 1147use DBI; @driver_names = ... -
Perl 中的线程
2012-03-31 22:19 1434原文:http://www.ibm.com/developer ... -
perl smtp 发送邮件
2012-03-20 23:44 4928原文:http://blog.chinaunix.net/ui ... -
perl开启并关闭w32进程
2012-03-05 16:31 1914perl是个很强大的脚本语言,cpan包罗万象的 ... -
perl发送http请求
2012-02-16 17:51 5134下面是一段perl发送http请求的代码,设置了请求头,表单参 ... -
perl对windows的进程的一些常用操作
2012-02-16 17:52 20211、获取所有正在运行的进程,用到了cpan的Win32::Pr ... -
perl查看已经安装的模块
2012-02-16 17:53 1344use ExtUtils::Installed; my ... -
在Perl调用C/C++代码/动态链接库
2012-02-10 17:46 6349原文http://manew.org/?p=62 perl想 ... -
perl 剪贴板操作
2012-02-09 14:05 1567以下代码设置剪贴板内容为 hello world,然后读取剪贴 ... -
perl 文件目录的创建删除拷贝
2012-01-11 18:03 5198以下三个是核心包提供的 1 unlink @files ... -
perl正则表达式中该注意的一个问题
2011-12-29 00:06 1116请看以下例子 代码1 $a='abc123EEE11 ... -
perl 目录遍历
2011-12-16 10:27 2308使用perl的 File::Find模块,目录遍历将会很简单, ...
相关推荐
cpanm是一种比cpan更简洁的perl模块安装工具。 cpanm本身其实只是一个可执行文件而已。将它下载到 bin 目录,然后添加执行权限就可以用了。 使用时,参数名直接为模块名称即可。如: $ sudo cpanm CGI::Session 可以...
[Perl文]IO::Socket简介 ''''''''''''''''''' new()方法: SOCKET对象变量=IO::Socket::INET->new(SOCKET变量值); 实例: $sock=IO::Socket::INET->new('192.168.1.2:23'); 讲解: 所有的PERL对象编程都把对象...
如果在windows下用perl编译模块时,需要使用dmake。 perl MakeFile.pl dmake dmake test dmake install 如果使用MinGw,需要把dmake放到MinGw的bin目录下。
CentOS解决错误:Requires: perl(Class::MethodMaker)。CnetOS中MySQL集群问题。
perl 模块(spreadsheet、XML::Simple、DBB::mysql等模块) perl 模块(spreadsheet、XML::Simple、DBB::mysql等模块)
包含simple和parser 很好用的xml解析文件
Perl语言程序设计:第1章 Perl语言简介.ppt
perl-Compress-Zlib最新版本,
Perl语言程序设计:第6章 正则表达式和模式匹配.ppt
JSON-PP:Perl核心模块的JSON :: PP
Perl语言程序设计:第3章 哈希.ppt
Perl语言程序设计:第5章 子程序.ppt
This zip contains perl modules that bugzilla required. Extract the zip and use 'install_ppms.pl' to install all modules automatically if you have install Perl already. Modules list: 1: 1_CGI.pm 2: 2...
bugzilla 3.2.2所需要的perl模块
perl-Net-Async-Tangence:Net-Async-Tangence perl模块-http:bazaar.leonerd.org.ukperl的(有损)镜像
Perl 模块 - Devel::Module::Trace Devel::Module::Trace 是一个 perl 模块,它打印所有使用和需要的模块及其来源和经过时间的表格。 这有助于拆除缓慢的模块并有助于优化模块的总体使用。 该模块使用 Time::Hires...
email-outlook-message-perl:电子邮件::Message Perl模块,用于读取Outlook .msg文件