向文件中添加一行$add,结果不对

向文件中添加一行$add,结果不对
问题是:对一个文件,在以#!开始的第一行后面,添加一行字符串$add,如果已经包含$add了,则不添加.(假定文件中就只有第一行使用了#!)
我设计成下面的代码,但是结果却是不管是否还有字符串$add,都会再加这样一行,麻烦各位帮忙看看,哪里的问题,谢谢.


#!perl -w
use strict;

my $add = "##copyright ";

$^I = ".bak";

chomp(my @array = <$ARGV[0]>);
foreach (@array) {
     if (/^($add)/) {
          $^I = undef;
          print "hahah";
     }
}
if ($^I) {
     while( <>) {
          s/(^#![\d\D]*)/$1$add\n/;
          print;
     }
}