这个小的Perl脚本有什么作用?

 mobiledu2502923007 发布于 2023-02-13 18:03

有人可以解释这个小Perl脚本的作用吗?谢谢.

#!/usr/bin/perl
my ($file, $from, $to) = @ARGV;
my $fh;
my $matching = 0;
open($fh, $file) or die $!;
while(<$fh>)
{
    if(/\Q$from\E/) { $matching = 1; }
    if($matching) { print $_; }
    if($matching && /\Q$to\E/) { last; }
}
close($fh);

Ulrich Dange.. 7

该脚本有三个参数:

    要读取的文件名

    开始表达

    结束表达

并打印(包括)开始表达式(第二个参数)和结束表达式(第三个参数)之间的所有内容.如果您有一个包含以下内容的文件:

111
222
333
444
555
666

./script.pl filename 333 555 将打印333,444555.

更多细节

my ($file, $from, $to) = @ARGV;

此行将命令行参数分配给$file,$from$to.这显示/提供了所需/不同的命令行参数.

my $fh;
my $matching = 0;

这两行只是声明并初始化后面使用的两个变量.

open($fh, $file) or die $!;

$fh如果无法打开文件,请尝试打开第一个传递的参数并将其分配给程序或退出程序.

while(<$fh>)
{

这只是迭代文件内容

    if(/\Q$from\E/) { $matching = 1; }

\Q\E是正则表达式Perl的具体.这可以防止将特殊字符解释为正则表达式.如果当前行包含contains $from,$matching则设置为1.

       if($matching) { print $_; }

如果$matching设置,则打印当前行

    if($matching && /\Q$to\E/) { last; }

if $matching设置并且$to在当前行中,退出循环

}
close($fh);

关闭文件

1 个回答
  • 该脚本有三个参数:

      要读取的文件名

      开始表达

      结束表达

    并打印(包括)开始表达式(第二个参数)和结束表达式(第三个参数)之间的所有内容.如果您有一个包含以下内容的文件:

    111
    222
    333
    444
    555
    666
    

    ./script.pl filename 333 555 将打印333,444555.

    更多细节

    my ($file, $from, $to) = @ARGV;
    

    此行将命令行参数分配给$file,$from$to.这显示/提供了所需/不同的命令行参数.

    my $fh;
    my $matching = 0;
    

    这两行只是声明并初始化后面使用的两个变量.

    open($fh, $file) or die $!;
    

    $fh如果无法打开文件,请尝试打开第一个传递的参数并将其分配给程序或退出程序.

    while(<$fh>)
    {
    

    这只是迭代文件内容

        if(/\Q$from\E/) { $matching = 1; }
    

    \Q\E是正则表达式Perl的具体.这可以防止将特殊字符解释为正则表达式.如果当前行包含contains $from,$matching则设置为1.

           if($matching) { print $_; }
    

    如果$matching设置,则打印当前行

        if($matching && /\Q$to\E/) { last; }
    

    if $matching设置并且$to在当前行中,退出循环

    }
    close($fh);
    

    关闭文件

    2023-02-13 18:04 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有