2015-04-02 73 views
0

兩個文本我有2個文件:
1. A.TXT
2. b.txt如何比較在Perl

A.TXT:

UP_00292229 191 
Xa_09833888 199 

b.txt

UP_00292229 191 
Xa_09833888 188 

我想比較這2個文件與第一列。

結果:

UP_00292229 is same 
Xa_09833888 is not same 

我怎麼能做到這一點在Perl?
如何在同一時間輸入2個文件?
如何檢查文件格式是否爲xxxxx dddd(xxxxx dddd之間有空格)?

+0

如果你想comapare這2個文件和第一柱,那麼你提到的結果是錯誤的,因爲這兩列是相同的。 – serenesat 2015-04-02 05:58:04

回答

0

該代碼將比較兩個文件的first column,如果值匹配,將打印same否則not same

use strict; 
use warnings; 

my %seen; 
open (my $file2,"<", "b.txt") or die $!; 
while (my $line = <$file2>) 
{ 
    chomp ($line); 
    my ($column3, $column4) = split ' ', $line; 
    $seen{$column3}++; 
} 
close ($file2); 

open (my $file1, "<", "a.txt") or die $!; 
while (my $line1 = <$file1>) 
{ 
    chomp $line1; 
    my ($column1, $column2) = split ' ', $line1; 
    print $column1, " ", $seen{$column1} ? "is same" : "is not same", "\n"; 
} 
close ($file1); 
+0

是的,我可以做比較。 – manChan 2015-04-02 08:49:14

+0

但我怎麼檢查文件格式是xxxxx dddd(xxxxx dddd之間有一個空格)? 謝謝 – manChan 2015-04-02 08:49:29

+0

我不明白你想用文件格式來做什麼,這是什麼xxxxx dddd?清楚地解釋你的需求。 – serenesat 2015-04-02 09:24:38

0

試試這個:

use warnings; 
use strict; 

open my $handle_file1,"<","file1"; 
open my $handle_file2,"<","file2"; 

my @ar = <$handle_file1>; 
my @br = <$handle_file2>; 

for my $i(0..$#ar){ 

    if($ar[$i] eq $br[$i]){ 
     chomp $ar[$i]; 
     print "$ar[$i] is same\n"; 
    } 
    else{ 
     chomp $ar[$i]; 
     print "$ar[$i] is not same\n"; 
    } 
} 
+0

這將比較文件與所有列。 – serenesat 2015-04-02 09:21:56