使用范围运算符..(也称为触发器运算符),它提供以下语法糖:
如果标量的任一操作数
..是常量表达式,则如果该操作数==与当前输入行号($.变量)相等(),则该操作数被视为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)