linux - 使用 Perl 程序和命令行参数读取指定行

标签 linux perl

那么,假设我正在编写一个 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/

相关文章:

c++ - 在cygwin上安装crosstool-ng时出错(_libintl_gettext)

perl - 如何回退到核心对象字符串化?

perl - 从Perl迁移到Powershell是否有很好的引用?

linux - 已建立的Linux进程

c - 我的 Linux C 进程如何知道在命令行上打开了多少文件?

linux - 如何将 xinit 和 xsetroot 串在一行中?

linux - 没有为简单的 hello 模块制定目标的规则

perl - 为什么我不必为 atan2 等使用 "use Math::Trig"?

perl - 降低 Perl 内存使用率的技巧

arrays - 如果在数组中找不到,perl 删除散列项