Chinaunix

标题: perl中文件操作 [打印本页]

作者: zhuyubei    时间: 2009-01-04 12:18
标题: perl中文件操作
我的代码是小骆驼中的习题,目的想把文件中#!所在的行下加入Copyright (C) 20XX by Yours Truly,但是我发现 第三行的代码 :
  1. @content = <FD1>;
复制代码
加在不同位置会有不同效果。

全部代码如下:
  1. #!/usr/bin/perl -w
  2. open FD1,"<ex2.pl" ;
  3. @content = <FD1>;     #注意这一行,如放在open FD2,">ex2.pl" ;后面则文件内容全丢失!而这个位置就正常
  4. open FD2,">ex2.pl" ;

  5. select FD2;
  6. foreach $line ( @content )
  7. {
  8.         if($line =~ /^#!/)
  9.         {
  10.                  $line =~ s/$line/$line##Copyright (C) 20XX by Yours Truly\n/;   #查找#!所在的行,并且替换
  11.                  print $line;
  12.         }
  13.         else
  14.         {
  15.                 print $line;
  16.         }

  17. }
复制代码

请问为什么呢?

[ 本帖最后由 zhuyubei 于 2009-1-4 12:31 编辑 ]
作者: ynchnluiti    时间: 2009-01-04 12:36
原帖由 zhuyubei 于 2009-1-4 12:18 发表
我的代码是小骆驼中的习题,目的想把文件中#!所在的行下加入Copyright (C) 20XX by Yours Truly,但是我发现 第三行的代码 :@content = ; 加在不同位置会有不同效果。

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

open FD2,">ex2.pl" ;#会清空ex2.pl
If MODE is '>', the file is truncated and opened for output, being created if necessary.

作者: zhuyubei    时间: 2009-01-04 12:48
谢谢!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2