简单高效读写修改整个文本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 ...
随机推荐
- apple ID的重要性
当手机丢失时,您可以将对应的产品码提供给运营商,提高找回丢失手机的可能性. 2.去App store下载“查找我的iPhone(Find My iPhone)”,立刻安上,用你的app ...
- POJ1664
Problem B Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other) Total Su ...
- 多台Mac电脑使用一个apple开发者账号
直接从已安装好的机器上导出私有密钥的,具体方法如下: Xcode的organizer的IPHONE DEVELOPMENT --->Developer Profile里自带的Export和Imp ...
- 装饰模式,制作一个蛋糕java
import java.text.DecimalFormat; //抽象组件组件 interface mkcake { public void cake(); } class Cake impleme ...
- godaddy.com 注册域名 买卖域名
https://www.godaddy.com/domains/searchresults.aspx?ci=83269&checkAvail=1&domainToCheck=ses.x ...
- Palindrome - URAL - 1297(求回文串)
题目大意:RT 分析:后缀数组求回文串,不得不说确实比较麻烦,尤其是再用线段数进行查询,需要注意的细节地方比较多,比赛实用性不高......不过练练手还是可以的. 线段数+后缀数组代码如下: ...
- (转)Google Fonts 的介绍与使用
转载自“前端笔记” http://www.cnblogs.com/milly/archive/2013/05/10/google-fonts.html Google Fonts 是什么?(以下翻译为 ...
- MySQL字符串函数
字符串大写和小写转换 MySQL 字符串大写和小写转化函数有两对: lower(), uppper() 和 lcase(), ucase() mysql> select lower('DDD') ...
- IE8下提示'console'没有定义错误
在开发的过程中因为调试的原因,在代码中增加console.info("xxxx"),而未进行删除 在IE8下測试该代码所在的页面报错,例如以下: 须要注意的是,使用console对 ...
- Delphi 颜色转换
http://files.cnblogs.com/xe2011/StringToColor.rar unit Unit1; interface uses Windows, Messages, SysU ...