最近一直在学习PERL的文本处理,今天在CU上遇到一个问题,练习了一下,结果没搞定...

while(<DATA>){
    if($.==1){
        chomp;
        %tab=();
        @b=map{((++$tab{$_}) ==2)?($_.$tab{$_}):($_)} split(/\s+/,$_);
        print "@b\n";
    }else{
        s/"(.*?)"/\1/g;
        print;
    }
}
__DATA__
Column1    Column2    Column3    Column4 Column3 Colum5
Data    Data    "Data"    Data    "Data"    Data

 

要求把第一行的重复的列在后面加上字符串2

把第其他行的引号去掉,以上是我写的大概的方法,我只想学习下而已,有很多的地方存在不足,特记录下。

@b=map{($tab{$_}++)?($_.$tab{$_}):($_)} split(/\s+/,$_);

以上是纠结我很久的一个地方,最后发贴才明白过来,很惭愧。