perl 给特定文件加上特定内容
给所有的输入文件,加上特定的内容
本例中,给所有的输入文件内加入## Copyright xxx
如果检测到已经有## Copyright字样的行,那么不添加,具体代码如下。
可以使用该脚本,给所有的verilog文件,加入`default_nettype none,将所有未声明的signal识别为error
perl
#!/bin/perl
use strict;
my %do_these; # 声明一个哈希标量;
foreach (@ARGV) {
$do_these{$_} = 1; #将所有的哈希值都设置为1;
}
while (<>) {
if (/\A## Copyright/im) { #忽略大小写,多行检查
delete $do_these{$ARGV}; #检测到特定字符,删除该哈希键值对
}
}
@ARGV = keys %do_these; # 重新取剩余的哈希键值对,设置为默认数组;
$^I = ".bak"; # 将源文件重命名为xx.bak备份文件,修改后的文件名为原文件;
while( <>) {
if (/\A#!/) {
$_ .= "## Copyright (C) 2024 by YOURS AUTHORITY!";
}
print; #将修改后的文件写回
}