perl脚本修改文档
2015-07-17 14:05
351 查看
需要利用perl脚本修改文档内容,但linux下大多数命令都是将修改后的内容显示到屏幕,或者输入到新文档,不能对原文档进行修改。想到一个笨办法:将文档所有内容取出,存到内存,修改后利用“>myfile”将myfile内容覆盖掉。但是不甘心这么笨啊,我只要修改一两行代码,却要对整个文档进行“读取->写入”操作,不带这么委屈的程序猿的。
上网查了好久,没有满意答案,于是东拼西凑,终于把目标实现。今天一天的成果,就是写了下面这几行代码,心血啊~~这个必须记录下来,做菜鸟的感觉,相当痛苦啊。。。
10 @ARGV = "/etc/vsftpd/vsftpd.conf";
11 $^I = "";
12 while(<>){
13 s/^anonymous_enable=YES/anonymous_enable=NO/;
14 s/^local_enable=NO/local_enable=YES/;
15 print;
16 }
以上代码的关键在于$^I,$^I的值为空时,表示修改原文件;值为“.bak”时,会将修改后的文件命名为“myfile.bak”,而原文件内容不变。
<>为钻石操作符,while(<>)会读取由@ARGV指定的文件的每一行。如果在脚本中@ARGV未被赋值,则用户在命令模式下输入的文件名就会赋给@ARGV。
上网查了好久,没有满意答案,于是东拼西凑,终于把目标实现。今天一天的成果,就是写了下面这几行代码,心血啊~~这个必须记录下来,做菜鸟的感觉,相当痛苦啊。。。
10 @ARGV = "/etc/vsftpd/vsftpd.conf";
11 $^I = "";
12 while(<>){
13 s/^anonymous_enable=YES/anonymous_enable=NO/;
14 s/^local_enable=NO/local_enable=YES/;
15 print;
16 }
以上代码的关键在于$^I,$^I的值为空时,表示修改原文件;值为“.bak”时,会将修改后的文件命名为“myfile.bak”,而原文件内容不变。
<>为钻石操作符,while(<>)会读取由@ARGV指定的文件的每一行。如果在脚本中@ARGV未被赋值,则用户在命令模式下输入的文件名就会赋给@ARGV。
相关文章推荐
- hdu 1701 ACMer
- hdu 1711 Number Sequence(kmp)
- awk中的NR FNR
- HDU 5090 Game with Pearls (贪心)
- Access操作类
- hdu 1711 Number Sequence(kmp)
- hdu 1701 ACMer
- win10家庭版升级专业版多少钱?win10家庭版升级专业版价格曝光
- Sublime Text 3 快捷键汇总
- 3个技巧让你正能量满满
- android:installLocation
- 虚拟机磁盘快照(vhd格式)
- 【工作日志】【asp】【05】err对象使用
- Eclipse Memory Analyzer简单使用笔记
- Windows主机端与自定义USB HID设备通信详解 .
- 给程序员第一天工作留下好印象的10个方式
- Chances Are,Your Biggest Problem Isn’t Technical
- crontab 定时任务
- mybatis There is no getter for property named 'xx' in 'class java.lang.String
- hadoop之MapReduce调用R的一次失败的总结~(续一)