通信人家园

标题: 使用perl脚本批量修改代码文件头的一种方法  [查看完整版帖子] [打印本页]

时间:  2015-8-19 10:10
作者: as3960     标题: 使用perl脚本批量修改代码文件头的一种方法

此脚本运行的思路,为大致如下:
u  找到当前目录下的所有.v文件;
u  将所有需要修改的.v文件的文件名存入一个log文件中;(方便查阅哪些.v文件进行了修改)
u  调用插入文件头的子程序;
u  完成所有.v文件的文件头中内容添加操作;
u  保存所有修改的.v文件;
详细的程序解释如下:

#!/usr/bin/perl -w
use strict;
use File::Find;
#将路径指向当前目录
chomp (my $dir = `pwd`);
#生成报告文件,里面存储了所有改动的.v文件的文件名
open(RESULT,">insert_result.log") or die "Can't open insert_result.log!\n";
print "***********start insert***************\n";
find(\&find_file,$dir);   #调用插入文件头的子程序
print "***********insert finish***************\n";
close(RESULT) or die  "Can't close insert_result.log : $!\n";
#子程序
sub find_file
{
    if($File::Find::name =~ m/\/crp\/(.*).v$/g) #找到当前目录下crp文件中的所有.v文件(根据实际情况修改具体的文件名)
    {
        print RESULT "FILE_NAME1.v \n";
        system "cp -r $File::Find::name $File::Find::name.bak";   
           open(VFile,"$File::Find::name.bak")or die "Can't open filenameFile::Find::name.bak !\n";
           open(RESULT1,">$File::Find::name") or die "Can't open File::Find::name : $!\n";
           while(<VFile>)
           {                  
                if(m/DEPARTMENT/ig) #搜索插入行的前一行的关键字,这一点比较关键,该例子中前一行的关键字为“DEPARTMENT”(需要保证该行后面全面需要插入)
                {
                  print RESULT1 $_;
                  print RESULT1 "//MANUAL_PERCENT:    100% \n";#蓝色部分为需要插入的内容
                }
             else
             {
                  print RESULT1 $_;
             }               
           }
        close(RESULT1) or die  "Can't close $1_cp.v : $!\n";
        close(VFile);
    }
}





通信人家园 (https://www.txrjy.com/) Powered by C114