那么,假设我正在编写一个 Perl 程序:
./program.perl 10000 < file
我希望它只读取"file"的第 10000 行。我如何使用这种形式的输入重定向来做到这一点?似乎我不断得到类似 10000 不是文件的信息。
我认为这会起作用:
#!/usr/bin/perl -w
$line_num = 0;
while ( defined ($line = <>) && $line_num < $ARGV[0]) {
++$line_no;
if ($line_no == $ARGV[0]) {
print "$line\n";
exit 0;
}
}
但它惨遭失败。
最佳答案
如果有命令行参数,那么<>
打开所谓的文件并从中读取,如果没有,则从标准输入中获取。 (参见 "I/O Operators" in the perlop man-page。)
如果像您的情况一样,您想从标准输入中读取是否有命令行参数,那么您需要使用 <STDIN>
相反:
while ( defined ($line = <STDIN>) && $line_num < $ARGV[0]) {
关于linux - 使用 Perl 程序和命令行参数读取指定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11487503/