Perl - 从文件到变量读取一系列行的最快方法

pow*_*boy 2 perl

给定起始行和结束行号,从文件到变量读取一系列行的最快方法是什么?

Gre*_*con 8

使用范围运算符..(也称为触发器运算符),它提供以下语法糖:

如果标量的任一操作数..是常量表达式,则如果该操作数==与当前输入行号($.变量)相等(),则该操作数被视为true .

如果您计划通过多个文件执行此操作<>,请确保关闭隐式ARGV文件句柄,如操作员perlfunc文档中所述eof.(这会重置行数$..)

下面的程序收集$lines命令行中命名的所有文件的变量行3到5,并在结尾打印它们.

#! /usr/bin/perl

use warnings;
use strict;

my $lines;
while (<>) {
  $lines .= $_ if 3 .. 5;
}
continue {
  close ARGV if eof;
}

print $lines;
Run Code Online (Sandbox Code Playgroud)

样品运行:

$ ./prog.pl prog.pl prog.c main.hs
use warnings;
use strict;


int main(void)
{
import Data.Function (on)
import Data.List (sortBy)
--import Data.Ord (comparing)