@sorted = sort {
field4($a) <=> field4($b) ||
field1($a) <=> field1($b)
} @oferta;
simply don't work.
The error message is
Undefined subroutine &main::field4 called at subasta.pl line 30.
Any help is appreciated.
--
http://www.telecable.es/personales/gamo/
Honesta turpitudo est pro causa bona --Publilius Syrus
"Was it a car or a cat I saw?"
perl -E 'say 111_111_111**2;'
Well, yeah, sorry for asking the obvious, but did you define a function
field4() in your main program? You are using it in the comparision, but
perl can't find it.
jue
I'm afraid I take the FAQ suggestion too literally.
How can be that subs be writed?
The array @oferta has $oferta[0 to .5M][0 to 3]
TIA
Insufficient information. Please post a minimal but complete program
that we can compile and run. In your case what we really really need is
an actual sample of your data structure (make sure your program creates
that) as well as a clear, precise description of your sort criteria.
jue
> On Fri, 18 Dec 2009, J�rgen Exner wrote:
>
> > gamo <ga...@telecable.es> wrote:
> > >This code
> > >
> > >@sorted = sort {
> > > field4($a) <=> field4($b) ||
> > > field1($a) <=> field1($b)
> > >} @oferta;
> > >
> > >simply don't work.
> > >
> > >The error message is
> > >Undefined subroutine &main::field4 called at subasta.pl line 30.
> >
> > Well, yeah, sorry for asking the obvious, but did you define a function
> > field4() in your main program? You are using it in the comparision, but
> > perl can't find it.
>
> I'm afraid I take the FAQ suggestion too literally.
> How can be that subs be writed?
>
> The array @oferta has $oferta[0 to .5M][0 to 3]
If you mean that the @oferta array has 500_000 elements, each of which
is a reference to an array with 4 elements, and you want to sort the
@oferta array using the numerical value of the fourth element of the
referenced arrays as a primary key and the numerical value of the first
element as a secondary key, then what you want is (untested):
@sorted = sort {
$a->[3] <=> $b->[3] ||
$a->[0] <=> $b->[0]
} @oferta;
--
Jim Gibson
This is exactly what I want. Thank you very much.
> --
> Jim Gibson
Here is an example of working code (not sorting a hash but an array,
but it shouldn't make any difference):
foreach my $key (sort {
$memberhash->{$a}{'membertype'} cmp $memberhash->{$b}
{'membertype'} ||
$memberhash->{$a}{'last'} cmp $memberhash->{$b}{'last'} ||
$memberhash->{$a}{'first'} cmp $memberhash->{$b}{'first'} }
keys %{$memberhash})
This uses the block style rather than the function style. You might
translate this into an array sort similar to this:
foreach my $element (sort
{
#here is the specific sort criteria, like $a <=> $b
}
@my_array)
{
print "This is the element: $element\n";
push @sorted, $element; #inverse sort
}
CC.