需求:
文件系统上有N个文件,他们都是.dat的文本文件,内容形式如下(类似于一个状态卡):
Program name: grantie
Author: Jackie
Company: Symantec
Department: QA
Phone: +86 1234 5678
Date: Tues March 9, 2013
Version: 1.1
Size: 11k
Status: Final beta
需要将上述的信息修改成如下的样子:(修改Author信息 Date改成当前日期 去掉Phone信息)
Program name: grantie
Author: Tom
Company: Symantec
Department: QA
Date: 当前日期
Version: 1.1
Size: 11k
Status: Final beta
Code:
use strict; use warnings; use utf8; chomp(my $date = `date`); $^I = '.bak'; while(<>){ s/^Author:.*/Author: Tom/; s/^Phone:.*\n//; s/^Date:.*/Date: $date/; print; }
其中 $^I = '.bak'; 中的 $^I 与<> 结合使用时,会生成一个后缀为.bak(hehe.dat生成hehe.dat.bak),前面与源文件名相同的备份文件,内容也是相同的。
然后对源文件的每一行做正则替换之后写到<>打开的文件句柄中。