通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索

军衔等级:

  新兵

注册:2009-11-24
跳转到指定楼层
1#
发表于 2015-8-19 10:10:13 |只看该作者 |倒序浏览
此脚本运行的思路,为大致如下:
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);
    }
}

举报本楼

您需要登录后才可以回帖 登录 | 注册 |

手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2024-11-29 17:35 , Processed in 0.209714 second(s), 15 queries , Gzip On.

Copyright © 1999-2023 C114 All Rights Reserved

Discuz Licensed

回顶部