Beast <mailto:[EMAIL PROTECTED]> wrote:
> I have an array:
> 
> 
> my @employee = ( [29243, 'john', 'John doe'],
>                   [24322, 'jane', 'Jane doe'],
>                   [27282, 'james', 'James doe']
>                 );
> 
> 
> Is there any builtin function in perl to sort the above array based
> on uid, username or fulname? 

perldoc -f sort.

Something like this should work. 

__BEGIN__
use strict;
use warnings;

my @employee = ( [29243, 'john', 'John doe'],
                  [24322, 'jane', 'Jane doe'],
                  [27282, 'james', 'James doe']
                );

# Specify the column on what you want to search as a argument..
my $i = $ARGV[0] || 0;

# sort subroutine..
my $subsort = sub {
    #no warnings;
    $a->[$i] <=> $b->[$i]
                ||
    $a->[$i] cmp $b->[$i]
};

print "Sorting by column $i\n";
foreach my $j ( sort $subsort @employee ){
    print "@$j\n";
}
__END__

Some sample runs gave me the following result...

$-> test-perl.pl 0
Sorting by column 0
24322 jane Jane doe
27282 james James doe
29243 john John doe

$-> test-perl.pl 1
Sorting by column 1
27282 james James doe
24322 jane Jane doe
29243 john John doe

$-> test-perl.pl 2
Sorting by column 2
27282 james James doe
24322 jane Jane doe
29243 john John doe

There can be a better way to do it...

HTH....

Note: Will give warnings if warnings is enabled for columns which have
text.

--Ankur

Bad style destroys an otherwise superb program.

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