语法:

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. Xmanager连接CentOS的远程桌面

    本文主要介绍通过Xmanager连接CentOS远程桌面时,在CentOS系统上需要做的一些配置. 1. Xmanager简介 Xmanager是一个运行于 Windows平台上的高性能的X Serv ...

  2. Delphi中使用TXMLDocument控件应注意的问题 转

    Delphi中使用TXMLDocument控件应注意的问题 delphiconstructorxmlclass今天写了一个类,其中用到了TXMLDocument控件.这个控件我是要动态生成的. 但是却 ...

  3. PHP中Content-type的MIME类型大全说明

    <?php $mimetypes = array(         'ez' => 'application/andrew-inset', 'hqx' => 'application ...

  4. JavaScript 的 Date 最详细解读

    基础的 Date() 就不说了~ :  ) 如何获得某个月的天数? 不知道大家遇到过这个问题吗?我想如果你们写过日期组件一定有这个问题,我当时的解决方案是这样的: 以下的三个方法,month 参数我都 ...

  5. hdoj 2141 Can you find it?【二分查找+暴力】

    Can you find it? Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/10000 K (Java/Others ...

  6. hdoj 2524 矩形A + B【递推】

    矩形A + B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  7. 11个让你吃惊的Linux终端命令

  8. 【转】eclipse插件:OpenExplorer快速打开文件目录

    在MyEclipse开发中常用到其中一个"Open In Explorer"的小插件,可以直接进入Windows资源管理器中打开选中文件所在的目录,在使用eclipse开发时也很需 ...

  9. win8系统添加开机自启动软件的方法(转)

    win8系统添加开机自启动软件的方法,把需要设置开机自启动的软件的快捷方式复制到下面任意路径就ok了.开机自启动路径如下:C:\ProgramData\Microsoft\Windows\Start ...

  10. JS为Select下拉框添加输入功能

    JavaScript使用parentNode.nextSibling.value实现的本功能,实际上你会发现网页上有两个控件元素,一个是Select,一个是input,使用CSS将input覆盖于se ...