0

我目前正在通过区域文件进行自动删除的工作排序..

perl -i -ne 'print unless (/#$DOMAINNAME/ and \$n=7) .. not \$n--' named.conf.ext

(它需要转义 n 才能工作,我猜它认为主脚本有一个要传递的变量?)

这个调用来自 perl 脚本,我想通过不必调用 shell 来从 perl 脚本重新运行 perl 来执行它,并让主脚本执行它来清理它。

正如您可能会说的那样,这里不是 perl 专家:) 我尝试过类似的东西

open (DATAIN, "<named.conf.ext");
 open (DATAOUT, "> named.conf.tmp");
 while (<DATAIN>){
  PRINT unless (/#foo.com/ and $n=7) .. not $n-- DATAOUT;
 }
 close DATAOUT;
close DATAIN;

和一些变体,但它在“-- DATAOUT”附近的测试行 4 抱怨语法错误

我确定我在这方面很犹豫,答案就在我面前,但是 2 天后,我认为大脑需要从哪里开始。

谢谢

4

1 回答 1

3

这是正常的

print DATAOUT;

这是缩写

print DATAOUT $_;

所以你要

print DATAOUT unless (/#foo.com/ and $n=7) .. not $n--;

或更长

print DATAOUT $_ unless (/#foo.com/ and $n=7) .. not $n--;
于 2013-05-19T04:43:11.387 回答