此脚本运行的思路,为大致如下: 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); } }
|