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. xml与json 介绍

    一.JSON数据格式 1)概念:json是一种网络数据传输格式,有值/对象:{“A”:1,”B”:”2”…}词典:对象的序列:[,,,,,]数组两种数据类型 2)URLWithString 将字符串网 ...

  2. 用递归方法求一个list的最大值

    极好的一张图,瞬间理解.然后留意一下边界条件直接搞定.

  3. Linux下多线程,断点续传,命令行下载工具axel

    From: http://www.2cto.com/os/201202/118482.html 安装办法: $ sudo pacman -S axel 使用方法: $ axel -n 10 -o /文 ...

  4. auto,register,static分析

    1.关键字auto auto是C语言中局部变量的默认类型,指明声明的变量在程序的栈上分配空间. 2.关键字static 指明变量的“静态”属性,局部变量存储在静态存储区: 文件作用标示符,只能在声明的 ...

  5. VMware Workstation(虚拟机)v10.0.1 简体中文破解版

    http://www.xp510.com/xiazai/ossoft/desktools/22610.html

  6. 【SSM 1】SpringMVC、Spring和Struts的区别

    导读:近期做到的项目中,用到的框架师SSM(SpringMVC+Spring+Mybatis),那么在这之前用过SSH,这里主要是区分一下SpringMVC和Struts,但是由于SpringMVC和 ...

  7. 【T电商】 maven初识

    PS:本篇博客,就是对于maven的一个简单的总结,认识.可能更多的是借鉴别人的看法,然后结合自己的使用,再加以说明. 首先,什么是maven: Apache Maven is a software ...

  8. C++学习基础八——重载输入和输出操作符

    一.重载输入操作符的要点: 1.返回值为istream &. 2.第一个参数为istream &in. 3.第二个参数为自定义类型的引用对象(例如Sales_Item &ite ...

  9. HTML中的下拉列表 select

    HTML中的下拉列表: <select> <option value ="1">Volvo</option> <option value ...

  10. canvas画随机闪烁的星星

    canvas画一颗星星: 规则的星星有内切圆和外切圆,每两个点之间的角度是固定的,因此可得到星星的每个点的坐标,画出星星. function drawStars(x,y,radius1,radius2 ...