On 6 Dec 2005 at 8:14, Adedayo Adeyeye wrote:
> Hello David,
>
> I'm able to open the file, read the contents and output the results of
> my initial filtering to a new file.
>
> The problem is that my new file has duplicate entries, and cleaning up
> duplicates is where I'm stuck.
>
> Kind regards
> On Mon, Dec 05, 2005 at 02:20:33PM +0100, Adedayo Adeyeye wrote:
> > How do I write a script to parse through this file and just
> > return the unique names. Ie I want the repetitions ignored.
>
> What have you tried? Where are you stuck? (Opening the file? Reading
> the contents? The actual filtering?). Nothing in your question is CGI
> related, have you got this working as a command line script but are
> having trouble converting it to work under CGI? What code have you got
> so far?
>
A long time ago someone on this list showed me exactly how to do
this. I guess there are not subscribed anymore. You can find this
code in a couple of places too, (cookbook P147).
#!/bin/perl -w
# Open and compare lists of file.
# Report only the records that are NOT in both files.
## Always use strict. It can help make debugging a lot easier.
use strict;
my ($file1, $file2);
my (%lns);
($file1, $file2) = @ARGV;
open(FH,"< $file1") || die "Can't open $file1: $!\n";
while (<FH>)
{
chomp;
$lns{$_} = 0;
}
close(FH);
open(FH2,"< $file2") || die "Can't open second file: $!\n";
while (<FH2>)
{
chomp;
if (defined $lns{$_})
{ $lns{$_} = 1; }
else
{ $lns{$_} = 0; }
}
close(FH2);
open(REPORT,"> $output") || die "Can't create $output: $!\n";
foreach my $ln (keys %lns)
{
print if ($lns{$ln} == 0);
}
close(REPORT);
You can obviously modify the 'next if' in the last loop to find
duplicates " print if ($lns{$ln} == 1)".
Please check this. I haven't had time to create any data to test it
against.
HTH.
Dp.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>