perl中文件操作

perl中文件操作

我的代码是小骆驼中的习题,目的想把文件中#!所在的行下加入Copyright (C) 20XX by Yours Truly,但是我发现 第三行的代码 :

[Copy to clipboard] [ - ]
CODE:
@content = <FD1>;

加在不同位置会有不同效果。

全部代码如下:

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl -w
open FD1,"<ex2.pl" ;
@content = <FD1>;     #注意这一行,如放在open FD2,">ex2.pl" ;后面则文件内容全丢失!而这个位置就正常
open FD2,">ex2.pl" ;

select FD2;
foreach $line ( @content )
{
        if($line =~ /^#!/)
        {
                 $line =~ s/$line/$line##Copyright (C) 20XX by Yours Truly\n/;   #查找#!所在的行,并且替换
                 print $line;
        }
        else
        {
                print $line;
        }

}

请问为什么呢?



QUOTE:
原帖由 zhuyubei 于 2009-1-4 12:18 发表
我的代码是小骆驼中的习题,目的想把文件中#!所在的行下加入Copyright (C) 20XX by Yours Truly,但是我发现 第三行的代码 :@content = ; 加在不同位置会有不同效果。

全部代码如下:
#!/usr/bin/perl -w
...

open FD2,">ex2.pl" ;#会清空ex2.pl

QUOTE:
If MODE is '>', the file is truncated and opened for output, being created if necessary.

谢谢!