Hi,
I have a very strange problem (to me anyways). I have the following
subroutine  to sort unique a UNIX password file based on UID and
username. But the problem is that some of the users get disappeared
the output password file. I couldn't figure out the pattern of user
disappearance but always the same few users are filtering.
Can someone please take a look at my code and tell me why is it
messing with me? Any suggestion to rewrite it is also welcome. Thank
you all.


sub Sort {
       my ($infile,$outfile) = @_;
       my @unique = ();
       my %seen   = ();

       open my $tmp_out, '>', "$outfile"
              or die "could not write the sorted list: $!";

       open my $tmp_in, '<', "$infile"
               or die "could not open $infile to sort: $!";

     while (<$tmp_in>) {
               next if (m/^#/);        # Skip comments
               next if (m/^\s*$/);     # Skip blank lines
               my $uname = (split /:/)[0]; # username
               my $uid = (split /:/)[2]; # uid
               next if $seen{ $uid }++;
               next if $seen{ $uname }++;
               push @unique, $_;
            }
       print $tmp_out @unique;
       print "DEBUG: Finishing Sort function.\n" if $DEBUG;
}

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


Reply via email to