语法:

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的更多相关文章

  1. 2.NetDh框架之简单高效的日志操作类(附源码和示例代码)

    前言 NetDh框架适用于C/S.B/S的服务端框架,可用于项目开发和学习.目前包含以下四个模块 1.数据库操作层封装Dapper,支持多种数据库类型.多库实例,简单强大: 此部分具体说明可参考博客: ...

  2. 【中文分词】简单高效的MMSeg

    最近碰到一个分词匹配需求--给定一个关键词表,作为自定义分词词典,用户query文本分词后,是否有词落入这个自定义词典中?现有的大多数Java系的分词方案基本都支持添加自定义词典,但是却不支持HDFS ...

  3. 使用Python对Excel表格进行简单的读写操作(xlrd/xlwt)

    算是一个小技巧吧,只是进行一些简单的读写操作.让人不爽的是xlrd和xlwt是相对独立的,两个模块的对象不能通用,读写无法连贯操作,只能单独读.单独写,尚不知道如何解决. #①xlrd(读) #cod ...

  4. MFC中修改静态文本框中文字的字体、颜色

    假设有一个静态文本框控件,其ID为:IDC_STATIC_XSDJ,且关联一个control类的CStatic类型的变量m_static_xsdj. 设置字体时自然要用到CFont类,下面介绍两种方法 ...

  5. Mycat 做简单的读写分离(转载)

    大漠小狼的个人空间   http://www.51testing.com/html/34/369434-3686088.html 使用Mycat 做简单的读写分离(一) 原本使用的是amoeba做的读 ...

  6. 你真的会玩SQL吗?简单的数据修改

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  7. 简单高效的nodejs爬虫模型

    这篇文章讲解一下yunshare项目的爬虫模型. 使用nodejs开发爬虫很简单,不需要类似python的scrapy这样的爬虫框架,只需要用request或者superagent这样的http库就能 ...

  8. berkerly db 中简单的读写操作(有一些C的 还有一些C++的)

    最近在倒腾BDB,才发现自己确实在C++这一块能力很弱,看了一天的api文档,总算是把BDB的一些api之间的关系理清了,希望初学者要理清数据库基本知识中的环境,句柄,游标的基本概念,这样有助于你更好 ...

  9. java对excel文件内容读写修改操作

    Read.java package domain; import java.io.FileInputStream; import java.io.InputStream; import jxl.Cel ...

随机推荐

  1. 【转】 MEF 和 MAF

    今天在MSDN上看了一下微软这俩个可扩展框架,微软技术高手真很有才! MEF 和 MAF区别: 早期的 .NET Framework 版本引入了 Managed Add-in Framework (M ...

  2. Java中的包

    包:定义包用package关键字. 1:对类文件进行分类管理. 2:给类文件提供多层名称空间. 如果生成的包不在当前目录下,需要最好执行classpath,将包所在父目录定义到classpath变量中 ...

  3. java---Unicode-字符转换器

    实现一个字符(包括汉字)的简单互相转换: package cn.hncu.gui2; import java.awt.Button; import java.awt.Color; import jav ...

  4. Bzoj 1703: [Usaco2007 Mar]Ranking the Cows 奶牛排名 传递闭包,bitset

    1703: [Usaco2007 Mar]Ranking the Cows 奶牛排名 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 323  Solved ...

  5. [cocos2d-x3.0]Android+NDK+Eclipse环境搭建及编译步骤~

    1: 必要准备 1): jdk&jre 2): adt-bundle 3): android ndk r9 4): python2.7 5): cocos2d-x 3.0 alpha0 2: ...

  6. 《University Calculus》-chape6-定积分的应用-平面曲线长度

    平面曲线的长度: 积分的重要作用体现在处理曲线和曲面. 在这里我们讨论平面中一条用参数形式表达的曲线:x=f(t),y=g(t),a≤t≤b. 如图. y=f(x)形式的弧长计算: 之前我们讨论过平面 ...

  7. Unity3D开发类似保龄球游戏

    先学习一些基本的脚本实现: 1.动态创建物体.默认位置是(0,0)位置 GameObject goNew = GameObject.CreatePrimitive(PrimitiveType.Cube ...

  8. Graphs and Minimum Cuts(Karger's Min-Cut Algorithm)

    Graphs  Two ingredients 1. vertices (nodes) v 2. edges(undirected or directed) Examples: road networ ...

  9. 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/19809337 作者:毛星云(浅墨 ...

  10. 推荐一个网站——聚合了微软的文件的Knowledge Base下载地址

    Microsoft Files是一个微软的文件数据库,从这里可以很方便的找到各个文件版本对应的下载链接. 比如今天debug需要找一个特定版本的sos.dll,从这个网站就很方便的给出了这个sos.d ...