Hi,
Sorry, I (wrongly) assumed you were an advanced Perl monk. I'll explain my solution step by step:
my ( @temp, %authors );
@temp = sort map { my @b=split; $b[2]; } `ls -l /path/to/authors`;
(NB: note the added path, I forgot that in my original answer!)
You should read this from right to left: each line of the output of the ls command is split and a map is created of each second element (ie. the user names). The array returned by map is sorted and assigned to @temp.
The array @temp now contains all authors of the files in your directory, including doubles!
foreach ( @temp )
{
$authors{$}=1 if not $authors{$_} and length $_;
}
This will loop through @temp and make a hash with the author names as key. The value is only stored if it doesn't exists already and has a length of > 0.
I do this to ensure the hash only contains unique names.
print "$_\n" for keys %authors;
This loops through the keys of the hash %authors and prints them. To get an array of the unique authors of the files in your directory you would do something like my @unique_authors = keys %authors;
Hope this helps,
-- JaWi
"A chicken is an egg's way of producing more eggs." |