[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