> This very green newbie would like to compare two files, let's say File1
> and File2.   I
> want to put the difference from File2 only, into a new file, File3.

I had a very simliar problem about a week ago, which James answerd here:

http://groups.google.com/groups?q=Perl+looping+(a+lot+of)
+files&hl=en&lr=&ie=UTF-8&selm=28A16704-4AD3-11D8-9A03-000A95BA45F8%
40grayproductions.net&rnum=1

or try google groups "perl looping through (a lot of) files"

The only really difference is that I didnt want to compare one FILE2 to FILE1 
but 500.

However, be carefull on your filesize:
I settled reading one file into mem (as an array) and looping through the 
other ones using a while (<FILE2>)  reading the 500 files line by line.

> For example:
>
> File1.txt
> oranges
> apples
> bananas
>
> File2.txt
> apples
> kiwi
> bananas
>
> The result I want for File3 is the new entry in File2, which is kiwi.  (I
> don't care that oranges was in File1 and not File2.)
>
> I tried using a nested foreach loop structure, but I can't get that to
> work and I have a feeling using nested foreach's is not the way to go.

why not?

> I'm guessing somehow I should use hashs, but I've never used a hash for
> anything and I don't really know how to use a hash.  Can someone help ?

do you need to associate the contens of the line with a filename ore 
something? if not, use an array.

> Here's my feeble attempt:
>
> my $file1;
> my $file2;
>
> my @file1 = qw(oranges apples bananas);
> my @file2 = qw(apples kiwi bananas);
>
As Dan showed:

FILE2:
> foreach $file2 (@file2){
>        foreach $file2 (@file2){
you may want 
         foreach my $file1(@file1){ 
here

>         #print "$mastervob $tempvob \n";
>         if ($file2 eq $file1) {
>             last;                       # I would like to go up to the
> toplevel "foreach" here, but I don't know how to do it
>             }                           # and I'm not sure this would even
> work.

as Dan said:
   
 next FILE2;

will do the job.


>         else{
>             print "$file2 \n";
>         }
>     }
> }

This doesent do what I assume you want: when you place the print in the inner 
loop.
Just look at the link above.

Hope thats a start, Wolf


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to