in reply to Re: Rule-based sorting
in thread Rule-based sorting

You're my hero :)

I've tested this out, and it seems to work very well. However, I am really confused about that, because it doesn't seem like it should even compile, much less work.

First off, there are these lines:

my $p_a = $string_table{$a}; my $p_b = $string_table{$b};

Now, I checked, and those are the only times $a and $b are used. They are never declared (no my's anywhere!) and they are never given a value. It seems like use strict should hop all over this like a rapid chef with a meat cleaver, but it doesn't. Even still, it seems like you're assigning to $p_a and $p_b from empty variables, but yet they clearly receive values. So my response is "huh?" Are $a and $b some sort of special variables that result from sort, or is something even funkier going on?

Also, &funky_sort only sorts two things. So when you call funky_sort @in_strings, it would seem that it would only sort the first two things, and leave the rest of the array alone. Of course, it doesn't do that at all, but why? Is it a consequence of calling sort first?

So I really want to thank you for your help, and this truly cool scrap o' code. However, you really made my head hurt :)

Some people drink from the fountain of knowledge, others just gargle.

Replies are listed 'Best First'.
(jptxs) Re: Re: Rule-based sorting
by jptxs (Curate) on Apr 10, 2001 at 20:13 UTC
    I'm not sure whay you're saying about funky_sort(), but as for $a and $b these are special variables in the context of doing a sort. see sort for a full explanation and a rather explicit warning about trying to declare them lexically. =)
    "A man's maturity -- consists in having found again the seriousness one had as a child, at play." --Nietzsche