打印文件,直到找到某些字符

时间:2013-04-01 06:39:18

标签: perl

  1. 我的脚本是从.txt文件中获取数据。
  2. 我需要打印数据,直到找到该文件中的“MSISDN1”。
  3. 我执行的代码是:

    open (SERVICE, "Service Req.txt") || die "Cannot open service req file $!\n";
    my @serv=<SERVICE>;
    
    open(LOG, ">>logfile.txt");
    
    foreach $ser_req(@serv) {
    
    #until ($ser_req =~ m/MSISDN1/g)
    {
    print $conn $ser_req;
    print LOG $ser_req;
        print $ser_req;
    }
    
    close(LOG);
    close (SERVICE) || die "Cannot close service req file $!\n";
    

    当取消注释条件时,代码运行不正确。

    代码中有一个非常小的错误。 不应该应用until循环。

1 个答案:

答案 0 :(得分:1)

until开始循环。你可能想要

last if $ser_req =~ /MSISDN1/;

而不是(until)循环。您还需要平衡大括号{ ... }

在将文件拖入内存后,您可以立即明智地关闭SERVICE。尽可能快地释放文件等资源是个好主意。如果您决定不啜饮整个文件(这可能会更好,特别是如果标记文本出现在大文件的开头附近),那么您将foreach循环替换为while (<SERVICE>)或类似的东西。