代码之家  ›  专栏  ›  技术社区  ›  Keith Bentrup

如果$^I=“.bak”已存在,如何取消输出?

  •  3
  • Keith Bentrup  · 技术社区  · 15 年前

    在Perl中,我使用公共模式循环文件:

    $^I=".bak"; 
    
    while(<>) {
      s/pattern/replacement/g;
      print;
    }
    

    问题是,在while循环之外,我不能这样做

    if (-e "$ARGV.bak") {
      # print warning and exit
    }
    

    因为$ARGV直到<>,在while循环中,$ARGV已经被替换。

    那么,我是错过了什么,还是我必须用不同的方式来做?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Michael Carman    15 年前

    检查 @ARGV <>

    die "Backup file already exists.\n" if -e $ARGV[0] . $^I;