At 04:37 PM 6/14/05 -0700, you wrote:
>Karyn Williams wrote:
>> Below is code that I found on the web that I slightly modified. I am
>> trying to create a script to remove from a file (tlist) the items in
>> another file (tnames). This works but I have multiple files (tlist) I
>> need to check against. I'm not sure how/where to put the loop and
>> would appreciate any help. I am also wondering why the hash ? Does it
>> work better in  the script than an array and what are the keys in
>> this case as the files (both) are just lists of e-mail addresses.
>> 
>       Are all the files w/in the same directory or scattered? Are there 2 or 
> 500?
>
>If only a few, then could create an array which has the filenames:
>
>my @MyTlist = qw (file1 file2 file3 file4);
>Now you could loop off this like:
> foreach my $file2 ( @MyTlist ) {
>   open (FILE2, $file2 ) or die "$!";
>   while (<file2 >) {
>           chomp;
>           push @missing,$_ unless (exists($compare{$_}));;
>   }
>   close(file2 );
>  }
>
>Now you can write out all that are not true.
>
>If there are a large number and say in one directory, then use opendir,
readdir to get the files you want and use a simliar setup as above.
>
>Wags ;)

While waiting for replies I maanged to come up with this: which is very
similar to what you have. However see the results below the code. Not so good.

# cat rm_test1.pl
#!/bin/perl

my %compare = ();
open (file1, "/usr/local/tools/tnames") or die "$!";
while (<file1>) {
        chomp;
        $compare{$_}++;
}
close(file1);

@lists = ("sa-art", "sa-dance");
foreach $list (@lists) {


        open (file2, $list) or die "$!";
        while (<file2>) {
                chomp;
                push @missing,$_ unless (exists($compare{$_}));;
        }
        close(file2);
        #print "$_\n" for @missing;

        open (file3, ">$list") or die "$!";
        print file3 join("\n",@missing);
        print file3 ("\n");
        close (file3);
}

# cat sa-art
karyn
ador
adam
sue
betty
jerry

# cat sa-dance
karyn
ador
adam
sue
betty
jerry

karyn
ador
adam
sue
betty
jerry

#

So, first question is why is this happenning ? Then how do I fix it ? Also,
there are just a handful of files BUT they are ever changing, so I would
like to not list the statically in the code. Would a 


@lists = qw (`ls /usr/local/dir`);

work ?

I have not yet tried Japhy's code. But I have some questions about it I'll
post tomorrow.




>> #!/bin/perl
>> 
>> my %compare = ();
>> open (file1, "/usr/local/tools/tnames") or die "$!";
>> while (<file1>) {
>>         chomp;
>>         $compare{$_}++;
>> }
>> close(file1);
>> 
>> open (file2, "/usr/local/tools/tlist") or die "$!";
>> while (<file2>) {
>>         chomp;
>>         push @missing,$_ unless (exists($compare{$_}));;
>> }
>> close(file2);
>> #print "$_\n" for @missing;
>> 
>> open (file3, ">/usr/local/tools/tlist1") or die "$!";
>> print file3 join("\n",@missing);
>> print file3 ("\n");
>> close (file3);
>> 
>> 
>> TIA
>> 
>> --
>> 
>> Karyn Williams
>> Network Services Manager
>> California Institute of the Arts
>> [EMAIL PROTECTED]
>> http://www.calarts.edu/network
>
>
>
>*******************************************************
>This message contains information that is confidential
>and proprietary to FedEx Freight or its affiliates.
>It is intended only for the recipient named and for
>the express purpose(s) described therein.
>Any other use is prohibited.
>*******************************************************
>
>
>
-- 

Karyn Williams
Network Services Manager
California Institute of the Arts
[EMAIL PROTECTED]
http://www.calarts.edu/network

-- 
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