以去掉一个文件中#开头的注释行为例.
一.命令行
-i 把源文件更名然后从这个更名的源文件里读取.最后把处理后的数据写入源文件.
perl -i.bak -ne'print unless m/^#/' filename
二.代 码
$^I 使用用同 -i参数,使用于代码中.
(1) 直接程序后跟文件名.
(2) 把文件名放入@ARGV内置变量内.
然后使用<>操作符循环读取修改.
#!/usr/bin/perl -w
$^I='.bak';
push @ARGV,'filename';
while (<>) {
print unless m/^#/;
}
注意:使用以上参数后,文件将新建并作为程序的标准输出,程序里要包含print等输出语法,不然文件将为空.
以上方式将产生一个与原文件相同大小的备份文件,下面方法真正在一个文件操作.
#!/usr/bin/perl -w
use strict;
open F1,'<', 'filename' or die;
open F2,'+<','filename' or die;
while ( ) {
print F2 unless m/^#/;
}
truncate(F2, tell(F2));
close F1;
close F2;
简要说一下原理:F1和F2将使用不用的文件指针,F1的指针一定大于等于F2的指针,F2为可读写方式打开,可以对其进行修改,tell()函数返回句柄当前的字节数,,truncate截断文件该字节数后面的内容.
阅读(1325) | 评论(0) | 转发(0) |