Visit Our UNIX and Linux User Community


Unable to get the correct sort order in perl.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Unable to get the correct sort order in perl.
# 1  
Old 05-26-2011
Unable to get the correct sort order in perl.

Hi,

I have created the hash.

Code:
%hash;
@arr1 = qw(Dealnum AdminStatus adminReason effFrom effTo);
@arr2 = qw(121212121 YES  1992-06-19T05:14:27 );
@hash{@arr1}=@arr2;
foreach(sort keys %hash){
print "$_ ---- $hash{$_}\n";
}

The output i got like this:
Code:
C:\strawberry\perl\bin>perl sort.pl
AdminStatus ----> YES
Dealnum ----> 121212121
adminReason ----> 1992-06-19T05:14:27
effFrom ---->
effTo ---->


I want to retain the same order as in the arr1. The output should be:

Code:
Dealnum ----> 121212121
AdminStatus  ----> YES
adminReason ----> 1992-06-19T05:14:27
effFrom ----> NULL
effTo ---> NULL

How can i get the elements printed as the same order of @arr1 in Hash?

Regards
Vanitha
# 2  
Old 05-26-2011
you can use this

Code:
%hash;
@arr1 = qw(Dealnum AdminStatus adminReason effFrom effTo);
@arr2 = qw(121212121 YES  1992-06-19T05:14:27 );
@hash{@arr1}=@arr2;
foreach(@arr1){
print "$_ ---- $hash{$_}\n";
}


o/p

Code:
Dealnum ---- 121212121
AdminStatus ---- YES
adminReason ---- 1992-06-19T05:14:27
effFrom ----
effTo ----


you have to do a Null string checking for 'NULL' print

---------- Post updated at 11:30 AM ---------- Previous update was at 11:14 AM ----------

Use this with NULL print
Code:
%hash;
@arr1 = qw(Dealnum AdminStatus adminReason effFrom effTo);
@arr2 = qw(121212121 YES  1992-06-19T05:14:27 );
@hash{@arr1}=@arr2;
foreach(@arr1){
 if ( !defined $hash{$_} || $hash{$_} eq "" )
 {
print "$_ ---- NULL\n";
}
else
{
print "$_ ---- $hash{$_}\n";
}
}

o/p

Code:
Dealnum ---- 121212121
AdminStatus ---- YES
adminReason ---- 1992-06-19T05:14:27
effFrom ---- NULL
effTo ---- NULL


Last edited by pludi; 05-26-2011 at 03:39 AM..

Previous Thread | Next Thread
Test Your Knowledge in Computers #533
Difficulty: Easy
A Boolean is type of variable that is used to hold a truth value, either true or false.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to sort list of directories in descending order in perl?

Hi, I have a problem . I have few directories like inpTDT_1, inpTDT_2, inpTDT_3 and so on inside HOME directory . In one of my perl script (which is in my HOME), the above directories like inpTDT_1, inpTDT_2, inpTDT_3 are sorting out in an order So I wanted to sort all the inpTDT_1, inpTDT_2,... (1 Reply)
Discussion started by: venkatesh
1 Replies

2. UNIX for Beginners Questions & Answers

Sort in chronological order

I am trying to sort a log file in chronological order to identify which ones did not process and still have an old (probably yesterday's) date. This is a sample of the file:flatf 010140 flatf Thu May 10 22:22:11 CST 2018 flats finished flatf 010142 flatf Thu May 10 22:31:25 CST 2018 flats... (4 Replies)
Discussion started by: wbport
4 Replies

3. Shell Programming and Scripting

Not able to sort two fields and printf not displaying the correct values

Not able to sorting two fileds resolved printf issue 01-1000/9|JAN 01-0000/6|MAN 01-1010/2|JAN 01-1010/2|JAN 01-1010/2|JAN 01-1000/9|JAN 01-1000/9|JAN 01-1000/9|SAA 01-1000/9|SAA 01-0000/6|SAN 01-0000/6|SAN 1.sort -t'|' -k1,1n -k2,2 file (3 Replies)
Discussion started by: kalia4u
3 Replies

4. Shell Programming and Scripting

How to print the output in correct order?

Hi, while using following awk commend I’m getting confused, The output is not like as the row present in input files, can anyone explain and tell me how to print in the order like in input. value=$(awk 'FNR>1 && NR==FNR{a=$4;next} a{sum+=$4} END {for(i in sum){printf i"\t"sum/2"@@";}}'... (5 Replies)
Discussion started by: Shenbaga.d
5 Replies

5. Shell Programming and Scripting

Sort by specific order?

Hello all I was wondering if someone has an idea how to sort by a specific order, let's say by a specific alphabet containing only 4 letters like (d,s,a,p) instead of (a,b,c....z) ?? Cheers! (6 Replies)
Discussion started by: cabrao
6 Replies

6. Shell Programming and Scripting

Sort numeric order

Hi I am using this cat substitutionFeats.txt | gawk '{$0=gensub(/\t/,"blabla",1);print}' | gawk '{print length, $0}' | sort -n | sort -r and the "sort -n" command doesn't work as expected: it leads to a wrong ordering: 64 Adjustable cuffs 64 Abrasion- 64 Abrasion pas 647 Sanitized 647... (4 Replies)
Discussion started by: louisJ
4 Replies

7. UNIX for Dummies Questions & Answers

sort -reverse order

I need to sort the particular column only in reverse order how i can give it.. if i give the -r option the whole file is getting sorted in reverse order. 1st 2nd col 3rd C col 4th col 5th col ------------------------------------------- C... (7 Replies)
Discussion started by: sivakumar.rj
7 Replies

8. Shell Programming and Scripting

Order text display not correct.

My shell script below for import data to Oracle it run okay. but the text display not correct follow order command executed. =========================Shell Script code================= #!/bin/sh #directory = ${1-'pwd'} #run import data with SQLLoader runSQLLoader() { ... (2 Replies)
Discussion started by: raccsdl
2 Replies

9. Shell Programming and Scripting

SORT order in Unix

I am converting mainframes JCL to be used in shell on a one to one basis... when i use the sort command unix does ascii sort as a result which numbers are first followed by charecters in the Ascending sort ... but themainframes uses the EBCDIC as result gives the charecters followed by numbers in... (5 Replies)
Discussion started by: bourne
5 Replies

10. UNIX for Dummies Questions & Answers

Sort / ascending order

What's the command to sort a file in ascending order and redirect the output to another file? Thanks!!!!!! (1 Reply)
Discussion started by: gyik
1 Replies

Featured Tech Videos