1, 利用Tie::File模块来直接对文件内容进行修改。

#!/usr/bin/perl -w

my $std="F160";
my $fast="FAST"; my $file=shift @ARGV;
updatefile2($file); sub updatefile2 {
if(defined($file)) { use Tie::File;
tie my @contents, 'Tie::File', "$file" or die "can't open $!\n";
for(@contents){
s/(.*[,])$std([,].*)/${}$fast${}/g
}
untie @contents; exit ;
} else {
print "please provide file name!\n";
}

2, 直接命令:

perl -pi -e 's/(.*[,])$std([,].*)/${1}$fast${2}/g' $file

3, 文件小的话,读取修改后再覆盖进去:

sub updatefile3 {
open FILE, $file or die "$!";
my @oldfile=<FILE>;
close FILE;
foreach(@oldfile) {
s/,$std,/,$fast,/g;
#s/,$fast,/,$std,/g;
}
open FILE, ">", $file or die "$!";
print FILE @oldfile;
close FILE;
}

4, 通过创建临时文件方式:

sub updatefile1 {
if(defined($file)) {
my $buffer="$file buffer"; # save the new data
my $bak = "$file.bak"; #back up the old data
open OPENFILE, "<", "$file" or die "can not open file:$!\n";
open OPENFILEE, ">", "$buffer" or die "can not open file:$!\n";
$^I=".bak";
while(<OPENFILE>) {
chomp;
s/,$std,/,$fast,/g;
#s/,$fast,/,$std,/g;
print "$_\n";
print OPENFILEE "$_\n" or die "can not write to $buffer: $!";
}
close OPENFILE; close OPENFILEE;
rename("$file", "$bak") or die "can not rename $file to $bak: $!";
rename("$buffer", "$file") or die "can not rename $buffer to $file: $!";
} else {
print "please provide file name!\n";
} }

5,一行一行的修改:

比如x.txt内容如下:
hello
world!

执行下面这个程序:
open(FH,"+<x.txt");
$line=<FH>;; #跳过第1行
$pos=tell(FH); #记录第2行起始位置
$line=<FH>;; #读入第2行内容
$line=~s/world/cosmos/; #进行一些更改
seek(FH,$pos,SEEK_SET); #重新定位到第2行起始位置
print FH $line; #更新第2行内容
close(FH);

然后x.txt就是这样了:
hello
cosmos!

要注意的地方就是更新文件时要用"+<"打开。

perl 对源文件内容修改 方法整理的更多相关文章

  1. Eclipse修改方法内容不用重启Jetty服务器

    我Eclipse以前DEBUG模式时,修改方法里的内容是不用重启的, 现在修改方法里是一行代码都要重启服务器了,很麻烦,速度慢了,找了百度,那些方法对我不合适,可能遇到的问题不一样. 也许会合适遇到和 ...

  2. Ruby数组方法整理

    数组方法整理 方法列表: all().any().none()和one():测试数组中的所有或部分元素是否满足给定条件.条件可以是语句块中决定,也可以是参数决定 append():等价于push() ...

  3. SharePoint 2013备份方法整理

    关于SharePoint备份 SharePoint的备份是一个数据副本,主要用于在系统出现故障后还原和恢复该数据. 备份的工具主要有以下几种(写的不全,欢迎补充.) SharePoint管理中心的备份 ...

  4. Magento后台手动修改订单状态方法及手动修改方法php

    订单详细内容页手动修改订单状态方法: 打开此文件:app\design\adminhtml\default\default\template\sales\order\view\history.phtm ...

  5. JavaScript动态改变表格单元格内容的方法

    本文实例讲述了JavaScript动态改变表格单元格内容的方法.分享给大家供大家参考.具体如下: JavaScript动态改变表格单元格的内容,下面的代码通过修改单元格的innerHTML来修改单元格 ...

  6. centos网卡eth1变成eth0修改方法

    centos网卡eth1变成eth0修改方法 2013年03月29日 ⁄ Linux基础 ⁄ 共 406字 ⁄ 暂无评论 ⁄ 被围观 8,266 views+ 虚拟化中,从模板克隆出来的虚拟机网卡都会 ...

  7. Linux重启inotify配置max_user_watches无效被恢复默认值8192的正确修改方法

    Linux下Rsync+inotify-tools实现数据实时同步中有一个重要的配置就是设置Inotify的max_user_watches值,如果不设置,当遇到大量文件的时候就会出现出错的情况. 一 ...

  8. 在WebBrowser中执行javascript脚本的几种方法整理(execScript/InvokeScript/NavigateScript) 附完整源码

    [实例简介] 涵盖了几种常用的 webBrowser执行javascript的方法,详见示例截图以及代码 [实例截图] [核心代码] execScript方式: 1 2 3 4 5 6 7 8 9 1 ...

  9. win7_32位安装MySQL_5.6以及密码修改方法

    1.下载mysql: http://www.xiazaiba.com/html/361.html 2.安装 方便起见,全部默认下一步吧,原理一个样,最后安装到: 3.配置环境变量 我这里添加的是  C ...

随机推荐

  1. ubuntu下安装php memcache扩展

    memcached 安装sudo apt-get install memcached memcached 参数说明memcached -d -m 50 -p 11211 -u root-m 指定使用多 ...

  2. revealapp 用于调试IOS的UI

    下载地址(官网):http://revealapp.com/ 破解方法:http://blog.csdn.net/ljb_wh/article/details/39345599

  3. (整理)IIS 7 503 "service unavailable" errors

    原文地址:http://mvolo.com/where-did-my-iis7-server-go-troubleshooting-503-quotservice-unavailablequot-er ...

  4. R型思维模式对软件开发的影响(草稿)

    The pragmatic programmers 一直在工作之余读些书,之前主要是纯英文版的计算机相关的算法,编译器,数学等,想通过读这些书来提高自己每日工作效能,结果收效甚微.一是,因为纯英文的书 ...

  5. Linux学习笔记——使用指定的用户权限执行程序——sudo

          sudo可以用来以其他用户身份执行命令,sudo命令可以针对单个命令授予临时权限.sudo仅在需要时授予用户权限,减少了用户因为错误执行命令损坏系统的可能性. 1:sudo的帮助信息如下: ...

  6. java web须知细节

    1.${pageContext.request.contextPath}是从这个请求路径(URL)上截取你的项目应用名的,比如你的项目名是hello,截取的结果应该就是/hello,/代表http// ...

  7. Zepto源码

    // Zepto.js // (c) 2010-2016 Thomas Fuchs // Zepto.js may be freely distributed under the MIT licens ...

  8. sql日期函数操作

    sql语句获取本周.本月.本年数据 SQL Serverselect * from [data] where  DATEPART(m,[date])=2 Accessselect * from [da ...

  9. JSP、HTML标签

    <%@ ...%> 表示是指令,主要用来提供整个JSP 网页相关的信息,并且用来设定JSP网页的相关属性,例如:网页的编码方式.语法.信息等.起始符号为: <%@ 终止符号为: %& ...

  10. openldap主机访问控制(基于hostname)

    http://mayiwei.com/2013/03/21/centos6-openldap/ http://www.zytrax.com/books/ldap/ch11/dynamic.html h ...