Perl读取文件中的一个片段

#Perl读取文件中的一个片段,该片段由指定的开始字符串所在行,与终止字符串所在行确定

#serachAndPrint.pl

use strict;
use warnings;

print "Input search sub string for Start:";
#从标准输入中接收开始搜索字符串
chomp(my $des=<STDIN>);

my @path = split(/,/, $des);

print "Input search sub string for End: ";
#从标准输入中接收终止搜索的字符串
my $termin=<STDIN>;

print "\n";

#chomp去除des中的newline(\n)标志
#chomp $des;

#chomp去除termin中的newline(\n)标志
chomp $termin;

#open(FILE, $filename)打开文件到句柄<FILE>中,注意更换路径
open(FILE,"<","C:\\Documents and Settings\\Administrator\\桌面\\process.txt")||die"cannot open the file: $!\n";

#open(FILE, $filename)打开文件到句柄<FILE>中,注意更换路径
open(OUTFILE,">>","C:\\Documents and Settings\\Administrator\\桌面\\result.txt")||die"cannot open the file: $!\n";

my $firstline ;

foreach $des (@path){

  #每次处理一个字符串后,回到文件的开头
  seek FILE, 0, 0;

  $firstline = <FILE>;

  #直到读取文件结尾
  while ( $firstline ){

      #判断firstline中是否包含目的字符串 des
      if( (index($firstline, $des) != -1) ){

        #开始打印包含目的字符串 des 的第一行
        print $firstline;

        #输入到 OUTFILE 文件中
        print OUTFILE $firstline;

        #打印动作直到遇到文件结束
        while( $firstline ) {
            $firstline = <FILE> ;
            print $firstline;

            #输入到 OUTFILE 文件中
            print OUTFILE $firstline;

            #遇到结束符 termin
            if( index($firstline, $termin) != -1 ){
              last;
            } 
        }

      }#if( (index($firstline, $des) != -1) ){

      $firstline = <FILE> ;
  }#while ( $firstline ){

  print "\n","\n";
  print OUTFILE "\n","\n";

}#foreach $des (@path){

close FILE;
close OUTFILE;

posted @ 2015-02-05 14:15  Madshaw  阅读(542)  评论(0)    收藏  举报