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

时间:2009-11-01 19:37:26

标签: perl

在Perl中,我使用常见模式循环文件:

$^I=".bak"; 

while(<>) {
  s/pattern/replacement/g;
  print;
}

其中$ ^我将创建备份。但是,我想测试备份文件是否存在并取消脚本(如果存在),因此备份不会被覆盖。必须明确删除它。

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

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

因为$ ARGV直到&lt;&gt;才设置,并且在while循环内部$ ARGV已被替换。

我错过了什么,或者我必须以不同的方式做这件事吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

在进入使用它的while循环之前,检查@ARGV(这是null <>从中读取其文件名列表)。 e.g。

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