How do I sort an array numerically after the second column?
My values are integers like 1, 2, 3, 4... and they are not unique, so I can't just reverse my hash and sort by keys.
I wanna sort my file/array so that I get the lines with the highest value in the top - that is descending.
This is the part of my code that causes problems:
When I try running this I get this warning:
Can't use string ("D25304") as an ARRAY ref while "strict refs" in use at ./program line 66, <ACCIN> line 9861.
D25304 is one of the keys.
Any ideas to how to solve this problem or what is wrong with my code?
Perl Sorting on the second Field of array elements.
1. you are getting the "Can't use Foo as an array ref" because "@ACCcount" is an array, not an arrayref. when you say $a->[1] you are pointing at a scalar arrayref that does not exist.
2. You Can't use the spaceship operator ( <=> ) to sort, unless all the arguments are being sorted are numeric, so you are stuck with cmp ( or a custom subroutine ).
3. Since you did not provide data I made some up, but I think this is what you want. You are sorting on the second SLOT ( slot[1] ) of each element of the array. so the first to things that are being considered for sort in the example are "2" and "5" Note: they are just considered first, that is not their final position. Can you see why?
4. Here is the output, with the data i made up, except that I bolded what determined the sort order.
Hope that helps.
P.S. If you want descending reverse the positions of $a and $b.
Last edited by deindorfer; 04-12-2010 at 10:09 PM..
Reason: Addt'l Comment
How to sort the following output based on lowest to highest BE?
The following sort does not work.
$ sort -t. -k1,1n -k2,2n bfd.txt
BE31.116 0s 0s DOWN DAMP
BE31.116 0s 0s DOWN DAMP
BE31.117 0s 0s ... (7 Replies)
Hello Guys
I want to sort a flat file by the third column (numeric ) and store it in some other name
I/P
9924873|20111114|00000000000013013|130|13|10/15/2010 12:36:22|W860944|N|00
9924873|20111114|00000000000013009|130|09|10/15/2010 12:36:22|W860944|N|00... (12 Replies)
I have an array and two variables as below,
I need to check if $datevar is present in $filename.
If so, i need to replace $filename with the values in the array.
I need the output inside an ARRAY
How can this be done.
Any help will be appreciated. Thanks in advance. (2 Replies)
Hi everyone
I have one question about using array in perl. let say I have several log file in one folder.. example
test1.log
test2.log
test3.log
and the list goes on..
how to make an array for this file? It suppose to detect log file in the current directory and all the log file will... (3 Replies)
Hi,
My developer is on vacation and I am not sure if there is something which is easier for this.
I have an array of strings. Each string in the array has "%" characters in it. I have to get the string(s) which have the least number of "%" in them.
I know how I can get occurrences :
... (7 Replies)
Hi Everyone,
#!/usr/bin/perl
use strict;
use warnings;
my @test=("a;b;qqq;c;d","a;b;ggg;c;d","a;b;qqq;c;d");
would like to split the @test array into two array:
@test1=(("a;b;qqq;c;d","a;b;qqq;c;d"); and @test2=("a;b;ggg;c;d");
means search for 3rd filed.
Thanks
find the... (0 Replies)
Hi Everyone,
Any simple code can simplify the code below, please advice. Thanks
# cat 2.pl
#!/usr/bin/perl
use warnings;
use strict;
my @aaaaa = <DATA>;
my @uids;
foreach (@aaaaa) {
my @ccccc = split (",", $_);
push @uids, $ccccc;... (3 Replies)
Hi,
This is my input file:
ali 5 usa abc
abu 4 uk bca
alan 6 brazil bac
pinky 10 utah sdc
My desired output:
pinky 10 utah sdc
alan 6 brazil bac
ali 5 usa abc
abu 4 uk bca
Based on the column two, I want to do the descending order and print out other related column at the... (3 Replies)
I have a perl script with an array of clients.
@arr = ("The ABC Corp", "AA Corp.", "BB Corp");
If I run
@a = sort (@arr);
I will get
@a = ("AA Corp", "BB Corp", "The ABC Corp");
but I want
@a = ("AA Corp, "The ABC Corp", "BB Corp");
How do I sort array without changing... (2 Replies)