Hi,

I have a script that sorts the IDs with numerials first followed by alphas. 
Everything works ok except that there are some IDs in the input file that are 
duplicates. How can I "omit" and duplicate IDs 
from the output file?

Below is my script and a sample input and output file generated from the below. 
Notice in the output file I have duplicate IDs for the following:

2, 5, 15, ab, bcm fa

I only want the output file to contain the first occurance and toss the rest 
out. How can I do this?



SCRIPT:
=======


#!/usr/local/bin/perl

require 5.000;

my %tags = ();

my $input = $ARGV[0];
my $output = $ARGV[1];

open (FILE, "< $input") or die "cannot open $input: $!\n";
  open (OUTPUTFILE, "> $output");
    chomp(my @lines = <FILE>);
    my @chars = map {
       my ($id) = m{<a id=(\w+)>};
       [ $_, $id, scalar $id =~ /^\d+$/ ];
    } @lines;
    my @sorted_chars = sort {
       $b->[2] <=> $a->[2]
       or
       ($a->[2] ? $a->[1] <=> $b->[1] : $a->[1] cmp $b->[1])
       or
       $a->[0] cmp $b->[0]
    } @chars;
    my @result = map { $_->[0] } @sorted_chars;
    print OUTPUTFILE "$_\n" for @result;
  close OUTPUTFILE;
close FILE;


INPUT:
======

<a id=ab>...
<a id=1>...
<a id=ab>...
<a id=15>...
<a id=2>...
<a id=fa>...
<a id=5>...
<a id=13>...
<a id=20>...
<a id=fa>...
<a id=3>...
<a id=7>...
<a id=5>...
<a id=21>...
<a id=2>...
<a id=bc>...
<a id=22>...
<a id=15>...
<a id=fa>...
<a id=25>...
<a id=8>...
<a id=24>...
<a id=2>...
<a id=ab>...
<a id=16>...
<a id=15>...
<a id=bc>...



OUTPUT:
========

<a id=1>...
<a id=2>...
<a id=2>...
<a id=2>...
<a id=3>...
<a id=5>...
<a id=5>...
<a id=7>...
<a id=8>...
<a id=13>...
<a id=15>...
<a id=15>...
<a id=15>...
<a id=16>...
<a id=20>...
<a id=21>...
<a id=22>...
<a id=24>...
<a id=25>...
<a id=ab>...
<a id=ab>...
<a id=ab>...
<a id=bc>...
<a id=bc>...
<a id=fa>...
<a id=fa>...
<a id=fa>...




WANT TO ACHIEVE:
=================

<a id=1>...
<a id=2>...
<a id=3>...
<a id=5>...
<a id=7>...
<a id=8>...
<a id=13>...
<a id=15>...
<a id=16>...
<a id=20>...
<a id=21>...
<a id=22>...
<a id=24>...
<a id=25>...
<a id=ab>...
<a id=bc>...
<a id=fa>...







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