我正在尝试在perl脚本内部编辑cfg文件,但是如果我在此之前读取用户输入则它不起作用.这是一个测试脚本,用于重现我看到的问题.
#!/usr/bin/perl -w use strict; my $TRACE_CFG = "trace.cfg"; print "Continue [y/N]> "; my $continue = <>; { local $^I = '.bak'; local @ARGV = ($TRACE_CFG); while (<>) { s/search/replace/; print; } unlink("$TRACE_CFG.bak"); }
如果我注释掉“my $continue =<> ;;”,则编辑有效.线.如果我确实读取了用户输入,看起来设置@ARGV到trace.cfg文件没有生效,而while循环等待来自STDIN的输入.我可以通过使用sed或使用临时文件并重命名来解决这个问题,但我想知道这种行为的原因以及执行此操作的正确方法.