Problems? Is your data what you think it is? | |
PerlMonks |
Re^5: Reorganizing the content of a fileby Laurent_R (Canon) |
on Dec 20, 2018 at 09:06 UTC ( [id://1227511]=note: print w/replies, xml ) | Need Help?? |
Hi ovedpo15,
The only problem to keep the original order of the input is that the data structure used in my solution, a hash, does not have a defined order. However, the solution is fairly easy: we only need to keep track of the original order one way or another. One possible way to do that is to add an array (@ranks) as an auxiliary data structure when reading the file and then to loop over the array when preparing the output: which produces the following output: The solution you contemplated in your question is also relatively easy, except for the syntax used to sort the records according to the ranks, which may be regarded as a bit complicated for a Perl beginner. Here, I have added a rank field into the records and then sort the id's in accordance to the rank: which produces the same output as before. Another possible way might be to read the input file again to get the id's in the proper order, but I wouldn't recommend that as that would be less efficient. You may also take a look at the Hash::Ordered module on the CPAN, which implements a hash data structure with a builtin order. Update: Fixed a typo: s/reparing the output/preparing the output/.
In Section
Seekers of Perl Wisdom
|
|