[問題] 合併三個檔案中的資料

看板Perl作者 (^_^)時間15年前 (2010/05/04 00:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/3 (看更多)
FILE1: name1,chrA1 name2,chrA2 name3,chrA3 ... FILE2: name1,chrB1 name2,chrB2 name3,chrB3 ... FILE3: name1,chrC1 name2,chrC2 name3,chrC3 ... 要將output變成: name1,chrA1,chrB1,chrC1 name2,chrA2,chrB2,chrC2 name3,chrA3,chrB3,chrC3 ... 每個file都有20萬筆 我現在是用while( while( while( ) ) ) 的方式比對,很沒效率而且會out of memory XD 並附加error "Use of uninitialized value $Name1 in string" 請教板大們有沒有比較好的方法呢? 謝謝板大:) 附上我的script: ##!/usr/bin/perl use strict; use warnings; my $file1 = "A.txt"; open FILE1, $file1 or die "File open error!!"; my $fileOUT = ">OUTPUT.txt"; open FILE0, $fileOUT or die "File open error!!"; while(<FILE1>){ chomp($_); my $Line1 = $_; if($Line1 =~ /(.+?),(.+)/){ my $Name1 = $1; my $CHR1 = $2; my $file2 = "B.txt"; open FILE2, $file2 or die "File open error!!"; while(<FILE2>){ chomp($_); my $Line2 = $_; if($Line2 =~ /(.+?),(.+)/){ my $Name2 = $1; my $CHR2 = $2; if($Name1 eq $Name2){ my $file3 = "C.txt"; open FILE3, $file3 or die "File open error!!"; while(<FILE3>){ chomp($_); my $Line3 = $_; if($Line3 =~ /(.+?),(.+)/){ my $Name3 = $1; my $CHR3 = $2; if($Name1 eq $Name3){ print FILE0 "$Name3,$CHR1,$CHR2,$CHR3\n"; } } } } } } } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.197.110 ※ 編輯: adu 來自: 140.113.197.110 (05/04 00:49)
文章代碼(AID): #1BtlU7ka (Perl)
文章代碼(AID): #1BtlU7ka (Perl)