【发布时间】:2016-03-05 16:11:14
【问题描述】:
我有一个用 perl 编写的命令行,在 Solaris 中执行(也许这与 UNIX 类似)每 6 行插入一个“等待”字符串
perl -pe 'print "wait\n" if ($. % 6 == 0);' file
但是,我想用一个参数 (ARGV[0]) 替换那个 6,结果是这样的:
perl -pe 'print "wait\n" if ($. % ARGV[0] == 0);' file 6
一切顺利,给了我正确的输出,直到它完成读取文件并将“6”视为下一个文件(即使它之前将其理解为ARGV[0])。
有没有办法使用-p 选项并指定哪些参数是文件,哪些不是?
已编辑:我认为使用 -f 选项存在问题,但正如 @ThisSuitIsBlackNot 指出的那样,我使用错误。
【问题讨论】:
-
你想用
-f做什么?我不认为它做你认为它做的事。见perldoc perlrun。 -
我明白了,你说得对,我认为它是从文件中读取的。但是,我会修改这个问题,因为它不是原因。谢谢
-
@Nilox Pass
ARGS在文件perl -spe 'print "wait\n" if (($. % $arg)==0);' -- -arg=6 file之前。抱歉,这行得通,我之前不在perl上。 -
总是启用警告,即使(特别想说)在 oneliners 中