) { s/pattern/replacement/g; print; } $^I 将在其中创建备份。但是,-6ren">
gpt4 book ai didi

perl - 如果 $^I =".bak"已经存在,如何取消输出?

转载 作者:行者123 更新时间:2023-12-05 01:27:49 27 4
gpt4 key购买 nike

在 Perl 中,我使用通用模式遍历文件:

$^I=".bak"; 

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

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

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

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

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

那么我是否遗漏了什么,或者我必须以不同的方式来做这件事吗?

谢谢!

最佳答案

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

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

关于perl - 如果 $^I =".bak"已经存在,如何取消输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1658097/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com