In article <[EMAIL PROTECTED]>,
 [EMAIL PROTECTED] (Rob Richardson) writes:
>Greetings!
>
>In the train schedule program that you are all probably heartily sick
>of by now, I have added a ScheduleDay class that represents all trains
>running on a given day.  It has a method that returns an array of
>references to all of the Train objects for that day.  I want to sort
>those trains on the times people have to show up for them.  The Train
>class has a GetCrewCall() method that returns a string containing the
>crew call time in HH:MM form, with two digits guaranteed for the hours.
> Thus, "cmp" will suffice for the comparison.  But I'm not sure how to
>set up the sort.  Here's what I have:
>
>sub GetTrainsByTime
>{
>       my $self = shift;
>       my @result;
>       my @temp;
>       my $aTrain;
>       my $aTrainName;
>
>       # First we build a temporary array of references to trains
>       foreach $aTrainName (keys $self)
                                  ^ % missing
>       {
>               push @temp, $self{aTrainName};
                                  ^ $ missing

>       }
>
>       @result = sort {$a->GetCrewCall() cmp $b->GetCrewCall()} @temp;
>       return @result;
>}

(1) If you wanted to put the keys of a hash into an array, just do it
all at once:

        @temp = keys %$self

(2) If you want to sort the keys of a hash, there's no need to put
them into an array.  sort takes a list as input:

        return sort { $a->GetCrewCall cmp $b->GetCrewCall } keys %self

>I'm pretty sure this will work, since $a and $b will be references to
>Train objects, and whatever is inside the brackets is just a plain
>ordinary block of code.  Is this correct?

Yes.

>In general, $a and $b are going to be elements of the array being
>sorted, aren't they?

Yes.

-- 
Peter Scott
http://www.perldebugged.com

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to