请教下如果处理这两个文件的内容?

请教下如果处理这两个文件的内容?

如何从f1.txt去掉f2.txt文件中重复字母的行
f1.txt
a
b
c
d
e
f
g
h
i
j
k
f2.txt
g
a
c
b
e
d
看你文件大不大啦

用两个循环就可以实现啊

一个循环读第一个文件,第二个循环嵌套在第一个里面去循环查找是否在第二个文件里面
#!/usr/bin/perl -w

open (FILE1,"diff1.txt") or die ("Can't open the file1!");
open (FILE2,"diff2.txt") or die ("Can't open the file2!");

@file1 = <FILE1>;
@file2 = <FILE2>;

while (@file1){
        $line1 = shift @file1;
        while (@file2)
        {
                $line2 = shift @file2;
                if ($line1 ne $line2)
                {
                        next;
                }
                elsif($line1 eq $line2)
                {
                        $line1 = undef;
                }
        }
        print $line1;
}
我这样写好像不行
while(<FILE>)

for(@file)


QUOTE:
原帖由 hitsubunnu 于 2008-4-23 17:35 发表
while()

for(@file)

您的想法是?


QUOTE:
原帖由 lvDbing 于 2008-4-23 17:37 发表


您的想法是?

你需要再看看while和for


QUOTE:
原帖由 lvDbing 于 2008-4-23 17:14 发表
如何从f1.txt去掉f2.txt文件中重复字母的行
f1.txt
a
b
c
d
e
f
g
h
i
j
k
f2.txt
g
a
c
b
e
d

没说清楚
文件size在20M之内这样处理都应该可以, 你得注意,这样直接就把f1.txt改变了。

#!/usr/bin/perl -w
use strict;

#my $File1 = 'f1.txt';
#my $File2 = 'f2.txt';

my $File1 = shift;
my $File2 = shift;

my %line = ();
open FH2, "< $File2" or die "Could not open $File2 for reading: $!\n";
while (<FH2>) {
   chomp;
   $line{$_} = '' unless (/^\s+$/);
}
close FH2;

my $temp = "";
open FH1, "+<", $File1 or die "could not open $File1 for updating: $!\n";
while (<FH1>) {
   chomp;
   $temp .= ($_ . "\n") unless defined $line{$_};
}

seek(FH1, 0, 0)          or die "could not seek to start of $File1: $!\n";
print FH1 $temp         or die "could not print to $File1: $!\n";
truncate(FH1, tell(FH1)) or die "could not truncate $File1: $!\n";
close(FH1);


QUOTE:
原帖由 khandielas 于 2008-4-24 04:40 发表
文件size在20M之内这样处理都应该可以, 你得注意,这样直接就把f1.txt改变了。

#!/usr/bin/perl -w
use strict;

#my $File1 = 'f1.txt';
#my $File2 = 'f2.txt';

my $File1 = shift;
my $File2 =  ...

这里面有个小小错误...平时不被人注意的...呵呵


QUOTE:
原帖由 khandielas 于 2008-4-24 04:40 发表
文件size在20M之内这样处理都应该可以, 你得注意,这样直接就把f1.txt改变了。

#!/usr/bin/perl -w
use strict;

#my $File1 = 'f1.txt';
#my $File2 = 'f2.txt';

my $File1 = shift;
my $File2 =  ...

非常感谢您的回答。