在Perl中,我使用常见模式循环文件:
$^I=".bak";
while(<>) {
s/pattern/replacement/g;
print;
}
其中$ ^我将创建备份。但是,我想测试备份文件是否存在并取消脚本(如果存在),因此备份不会被覆盖。必须明确删除它。
问题是在while循环之外我不能这样做
if (-e "$ARGV.bak") {
# print warning and exit
}
因为$ ARGV直到&lt;&gt;才设置,并且在while循环内部$ ARGV已被替换。
我错过了什么,或者我必须以不同的方式做这件事吗?
谢谢!
答案 0 :(得分:3)
在进入使用它的while循环之前,检查@ARGV
(这是null <>
从中读取其文件名列表)。 e.g。
die "Backup file already exists.\n" if -e $ARGV[0] . $^I;