perl如何格式化下列格式的文本数据(已解决)

perl如何格式化下列格式的文本数据(已解决)

已有文本格式如下:

:DATA
field1_data
field2_data
field3_data
:DATA
field1_data
field2_data
field3_data

我想把他格式化成这样:
field1_data           field2_data               field3_data                         #第一条记录
field1_data           field2_data               field3_data                         #第二条记录

这样我就可以导入数据库了,原文本包含有2000条这样的记录,2M大小。

每行数据其实不止一个字段信息,正规表达式我自己应该可以写,但是如何循环啊?

谢谢大家给个思路!

===================答案在4楼,谢谢这个大人=======

while (<>)
{
    unless (/^:DATA/)
    {
        chomp();
        print "$_\t";
    }
    else
    {
        print "\n";
    }
}

===================继续问这个问题=======
实际文本没有那么简单。通常是这样:

:DATA
垃圾数据,垃圾数据,field1_data,,,垃圾数据
垃圾数据,field2_data,,
垃圾数据,field3_data,,,垃圾数据
:DATA
垃圾数据,垃圾数据,field1_data,,,垃圾数据
垃圾数据,field2_data,,
垃圾数据,field3_data,,,垃圾数据

怎么才能把值给取出来,并保存下来呢?

=================有人帮忙这个代码可以======
while (<>)
{
    if (/^:DATA/)
    {
        #start to read 3 lines        
        my $line1 = <>;
        next unless $line1;
        my $line2 = <>;
        next unless $line2;
        my $line3 = <>;
        next unless $line3;
        
        #get the data
        my @data1 = split ",", $line1;
        print $data1[2], "\t";
        my @data2 = split ",", $line2;
        print $data2[1], "\t";
        my @data3 = split ",", $line3;
        print $data3[1], "\n";
    }
    else
    {
        print "\n";
    }
}

1. set $/ to ": DATA"
2. while(<$input_handle>)
split $_ with "\n" and join the splited items with " "


[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl
use strict;
use warnings;
open  my $file,"<","input" or die "fail to open input $!";
chomp ( my @data = <$file> );
my @field = grep { $_ !~ /^\s*$/ } split /: DATA/,"@data";  # remove the leading empty lines
print map { "$_\n" } @field;



[Copy to clipboard] [ - ]
CODE:
#!/bin/perl

open (FILE, "< input") or die "open input file error!\n";

while (<FILE>)
{
    unless (/^: DATA/)
    {
        chomp();
        print "$_\t";
    }
    else
    {
        print "\n";
    }
}

很简单,取出数据的时候再用正则过滤数据.