请教如何提取匹配的前两行???

恩 好的 看到了 非常感谢 我改了下 可以了
谢谢啦 我的方法和这个差不多了 呵呵 只不过 你的后面的换行好像写错了哦 ,应该是"\n" 吧
一次读三行...放进一个array..
每次比对第三行...
看看匹不匹配..如果匹配...就把前两行印出来..
如果不匹配..再读进一行..把第一行从array中拿掉.

这样子应该会比较快..因为没消耗太多内存....
#!/usr/bin/perl
use warnings;
use strict;

my$flag=0;
my$a;
while(<DATA>)

{
    if(/^>/)
    {
        $flag = 1;
        $a = 0;
    }
    if($flag )
    {
        print $_;
        $a++;
    }
    if($a == 3)
    {
        $flag = 0;
    }
}
不用树组,那就直接print嘛!~
谢谢啦 呵呵
谢谢了
#!/usr/bin/perl -w
use strict;
my $line_count = 0;
while(<>){
        if(m/^>/){
                $line_count = 0;
                print;
                $line_count++;
        }elsif($line_count < 3){
                print;
                $line_count++;
        }

}
@a = $a =~/(>.*?\n.*?\n.*?)\n/g;

LZ试试这个正则表达式如何。
$a里面放你说的那个文件里面的内容,将匹配出来的内容全部放在@a数组里面