gpt4 book ai didi

perl - 使用 while(<>) ARGV[1] 格式的 perl 命令行参数,可能使用 shift 命令?

转载 作者:行者123 更新时间:2023-12-01 02:39:26 26 4
gpt4 key购买 nike

我基本上想做类似的事情

while(<>){
my ($one, $two, $three) = split;
if ($one > ARGV[1]){
#some commands
}
}

我会在哪里调用它

./script.pl text.txt 50

但显然我不希望 while 循环读取 50 中的任何内容关于最好最干净的方法的任何想法,比如我是否可以以某种方式改变命令行参数

最佳答案

<> ARGV 读取文件句柄,您可以将其视为 @ARGV 中所有文件名的串联。 。 ARGV文件句柄直到 <> 才会被初始化被调用,因此操作 @ARGV 是安全的在 while 循环之前。

my $val = pop @ARGV;             # take last argument
my ($val) = splice @ARGV, 1, 1; # take 2nd argument
...
while (<>) { # now ARGV fh uses whatever is currently in @ARGV
my ($one,$two,$three) = split;
if ($one > $val) { ... }
}

另请注意,如果 @ARGV为空,<>运算符将从标准输入中读取。只要你清空@ARGV在尝试读取 <> 之前的数组,这样的东西也适用于 <> :

./script.pl 50 < text.txt

关于perl - 使用 while(<>) ARGV[1] 格式的 perl 命令行参数,可能使用 shift 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38111618/

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