[OT] Help with Perl Script
Dan Track
dan.track at gmail.com
Wed Apr 21 16:31:11 UTC 2010
On Wed, Apr 21, 2010 at 4:41 PM, Norman Gaywood <ngaywood at une.edu.au> wrote:
> On 22 April 2010 01:26, Norman Gaywood <ngaywood at une.edu.au> wrote:
>> On Wed, Apr 21, 2010 at 04:12:06PM +0100, Dan Track wrote:
>>> On Wed, Apr 21, 2010 at 1:30 PM, Norman Gaywood <ngaywood at une.edu.au> wrote:
>>> > On Wed, Apr 21, 2010 at 09:21:30AM +0100, Dan Track wrote:
>>> >> hashes. It's after this that I'm stuck, I'm struggling to order the
>>> >> hash of hashes by uid and then print the ordered list out? Can someone
>>> > [snip]
>>> >> foreach my $sorted ( sort { $HoH->{$a}{uid} cmp $HoH->{$b}{uid} } keys %HoH)
>>> >
>>> > cmp is a string comparison. You probably want to sort numerically on the
>>> > uid. So replace 'cmp' with '<=>'
>>
>>> foreach my $sorted ( sort { $HoH{$a}->{"uid"} <=> $HoH{$b}->{"uid"} } keys %HoH)
>>> {
>>> print STDOUT "$HoH{$sorted}\n"
>>> }
>>
>>> and all I get out is:
>>>
>>> perl sort.pl
>>> HASH(0x89de3d0)
>>> HASH(0x8a05d40)
>> [snip]
>>
>> $HoH{$sorted} is a reference to a hash. $HoH{$a}{uid} (or in
>> long hand $HoH{$a}->{"uid"}) should print out the uid numbers.
>
> That should be $HoH{$sorted}{uid}
>
> --
Fantastic, you're a star :)
One last point how can I print all the associated deatils attached to
that uid i.e username, home dir etc and then cycle through for every
uid and print the same information for each respective uid? The uid's
need to be in order i.e something like
uid: 0, username: root etc...
uid 50, username: mysql etc...
Many many thanks
Dan
More information about the users
mailing list