简单高效读写修改整个文本Slurp
语法:
use File::Slurp;
#标量环境下一次读取所有文本内容到标量中。
my $text = read_file( 'filename' ) ;
# 读取文本的所有行到数组中。
my @lines = read_file( 'filename' ) ;
#将一个标量写入到文件中。
write_file( 'filename', $text ) ;
#将数组写入一个文件中。
write_file( 'filename', @lines ) ;
#读取和存储简单的配置文件
# made of key=value lines.
'my %conf = read_file( $file_name ) =~ /^(\w+)=(.*)$/mg ;
write_file( $file_name, {atomic => }, map "$_=$conf{$_}\n", keys %conf ) ;
# 文本开始处插入文本
prepend_file( 'filename', $text ) ;
# 替换文本中所有的‘foo'为'bar’
edit_file { s/foo/bar/g } 'filename' ;
# 删除文件中所有包含‘foo'的行
edit_file_lines sub { $_ = '' if /foo/ }, 'filename' ;
#读取整个目录(越过. and ..)
my @files = read_dir( '/path/to/dir' ) ;
read_file
my $text = read_file( 'filename' ) ;
my $bin = read_file( 'filename' { binmode => ':raw' } ) ;
my @lines = read_file( 'filename' ) ;
my $lines = read_file( 'filename', array_ref => ) ;
binmode
你能设置这个参数作为binmode,utf8等模式
my $bin_data = read_file( $bin_file, binmode => ':raw' ) ;
my $utf_text = read_file( $bin_file, binmode => ':utf8' ) ;
array_ref
如果此参数被设置,返回值将使数组的索引。下列两种方式是等同的。
my $lines_ref = read_file( $bin_file, array_ref => ) ;
my $lines_ref = [ read_file( $bin_file ) ] ;
chomp
如果此参数被设置,行将被chomp,只有在列表环境或者数组索引环境下。
write_file
write_file( 'filename', @data ) ;
write_file( 'filename', {append => 1 }, @data ) ;
write_file( 'filename', {binmode => ':raw'}, $buffer ) ;
append
如果设置此参数,数据将被追加到原文本后。
append_file
# 两种方式效果相同 都是追加文本到文件尾
append_file( $file, @data ) ;
write_file( $file, {append => }, @data ) ;
prepend_file
文本最开始插入文本
use File::Slurp qw( prepend_file ) ;
prepend_file( $file, $header ) ;
prepend_file( $file, \@lines ) ;
prepend_file( $file, { binmode => 'raw:'}, $bin_data ) ;
edit_file
use File::Slurp qw( :edit ) ;
edit_file { s/foo/bar/g } 'filename' ;
edit_file_lines sub { $_ = '' if /foo/ }, 'filename' ;
read_dir
返回给定目录下所有文件和文件夹的名,但是默认移除.和..
my @files = read_dir( '/path/to/dir' ) ;
keep_dot_dot
如果该选项设置为真,.和..不被移除
prefix
如果该选项设置为真,文件夹和文件的将是全目录
my @paths = read_dir( '/path/to/dir', prefix => ) ;
简单高效读写修改整个文本Slurp的更多相关文章
- 2.NetDh框架之简单高效的日志操作类(附源码和示例代码)
前言 NetDh框架适用于C/S.B/S的服务端框架,可用于项目开发和学习.目前包含以下四个模块 1.数据库操作层封装Dapper,支持多种数据库类型.多库实例,简单强大: 此部分具体说明可参考博客: ...
- 【中文分词】简单高效的MMSeg
最近碰到一个分词匹配需求--给定一个关键词表,作为自定义分词词典,用户query文本分词后,是否有词落入这个自定义词典中?现有的大多数Java系的分词方案基本都支持添加自定义词典,但是却不支持HDFS ...
- 使用Python对Excel表格进行简单的读写操作(xlrd/xlwt)
算是一个小技巧吧,只是进行一些简单的读写操作.让人不爽的是xlrd和xlwt是相对独立的,两个模块的对象不能通用,读写无法连贯操作,只能单独读.单独写,尚不知道如何解决. #①xlrd(读) #cod ...
- MFC中修改静态文本框中文字的字体、颜色
假设有一个静态文本框控件,其ID为:IDC_STATIC_XSDJ,且关联一个control类的CStatic类型的变量m_static_xsdj. 设置字体时自然要用到CFont类,下面介绍两种方法 ...
- Mycat 做简单的读写分离(转载)
大漠小狼的个人空间 http://www.51testing.com/html/34/369434-3686088.html 使用Mycat 做简单的读写分离(一) 原本使用的是amoeba做的读 ...
- 你真的会玩SQL吗?简单的数据修改
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- 简单高效的nodejs爬虫模型
这篇文章讲解一下yunshare项目的爬虫模型. 使用nodejs开发爬虫很简单,不需要类似python的scrapy这样的爬虫框架,只需要用request或者superagent这样的http库就能 ...
- berkerly db 中简单的读写操作(有一些C的 还有一些C++的)
最近在倒腾BDB,才发现自己确实在C++这一块能力很弱,看了一天的api文档,总算是把BDB的一些api之间的关系理清了,希望初学者要理清数据库基本知识中的环境,句柄,游标的基本概念,这样有助于你更好 ...
- java对excel文件内容读写修改操作
Read.java package domain; import java.io.FileInputStream; import java.io.InputStream; import jxl.Cel ...
随机推荐
- Ajax的简单小例子
1.首先下载ajax.dll,一个百度一下都有下载的!自行查找. 2.把ajax.dll导入到工程.右键工程-->添加引用--->浏览,找到下载好的ajax.dll文件,点击确定,这时候在 ...
- QTP自动化测试权威指南 连载(一)
第一章 简介 什么是自动化测试 自动化测试是对一个已有的手工测试过程减少并尽可能排除人工干预的过程. 什么时候适合做自动化测试 下面是一组适合将手工测试自动化的考量因素: ● 测试需要经常重复. ● ...
- [PHP] 跳转以及回到原来的地址
回到原来的地址: 1.PHP(PHP代码) Header('Location:'.$_SERVER["HTTP_REFERER"]); 2.JavaScript(相当于后退按钮,- ...
- Android 2D绘图初步
Android是通过graphics类来显示2D图形的.其中graphics中包括了Canvas.Paint.Color.Bitmap等类.graphics具有绘制点.线.颜色.2D几何图形.图像处理 ...
- HDU2037 今年暑假不AC 贪心算法
贪心算法 : 贪心算法就是只考虑眼前最优解而忽略整体的算法, 它所做出的仅是在某种意义上的局部最优解, 然后通过迭代的方法相继求出整体最优解. 但是不是所有问题都可以得到整体最优解, 所以选择贪心策略 ...
- mvcc摘抄
MVCC浅析原文:---->>>>>> http://blog.csdn.net/chosen0ne/article/details/18093187 在并发读写数 ...
- XSS 简单理解之:AntiSamy
AntiSamy介绍 OWASP是一个开源的.非盈利的全球性安全组织,致力于应用软件的安全研究.我们的使命是使应用软件更加安全,使企业和组织能够对应用安全风险作出更清晰的决策.目前OWASP全球拥有1 ...
- 微软提供的API的各个版本之间的区别
First Floor Software这个diff lists非常方便的给出了微软提供的API的各个版本之间的区别,比如下表是.NET 4和.NET 4.5的API变化总结.我们可以看到.NET 4 ...
- 基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件[转]
上一篇文章介绍到怎么在自己的Java环境中搭建openfire插件开发的环境,同时介绍到怎样一步步简单的开发openfire插件.一步步很详细的介绍到简单插件开发,带Servlet的插件的开发.带JS ...
- 08_android入门_android-async-http开源项目介绍及用法
android-async-http开源项目可以是我们轻松的获取网络数据或者向server发送数据.使用起来很easy,关于android-async-http开源项目的介绍内容来自于官方:http: ...