in reply to File content sorting based on type

Your code is incomprehensible to me. Looks like a simple sort. Here is how to do it....Only uses column 2, to use other columns as part of the sort is not that hard, but here, not needed? Why don't your use Excel or other spreadsheet and not worry about Perl?
#!usr/bin/perl use strict; use warnings; my @lines; while (<DATA>) { push @lines,$_; } @lines = sort by_col2 @lines; print @lines; sub by_col2 { my ($A_col2) = (split ' ', $a)[1]; my ($B_col2) = (split ' ', $b)[1]; $A_col2 cmp $B_col2; } =prints 912796HD4 Bill 4-Week 2016-01-26 2016-01-28 2016-0 +2-25 99.977056 NULL 912796HD4 Bill 4-Week 2016-01-26 2016-01-28 2016-0 +2-25 99.977056 NULL 912810RS9 Bond 30-Year 2016-05-12 2016-05-16 2046-0 +5-15 97.619462 2.500000 912810RQ3 Bond 29-Year 2016-04-14 2016-04-15 2046-0 +2-15 98.011430 2.500000 912828Q86 Note 1-Year 2016-05-25 2016-05-27 2018-0 +4-30 100.003850 NULL 912828N71 Note 9-Year 2016-05-19 2016-05-31 2026-0 +1-15 103.533587 0.625000 =cut __DATA__ 912828Q86 Note 1-Year 2016-05-25 2016-05-27 2018-0 +4-30 100.003850 NULL 912796HD4 Bill 4-Week 2016-01-26 2016-01-28 2016-0 +2-25 99.977056 NULL 912810RS9 Bond 30-Year 2016-05-12 2016-05-16 2046-0 +5-15 97.619462 2.500000 912810RQ3 Bond 29-Year 2016-04-14 2016-04-15 2046-0 +2-15 98.011430 2.500000 912796HD4 Bill 4-Week 2016-01-26 2016-01-28 2016-0 +2-25 99.977056 NULL 912828N71 Note 9-Year 2016-05-19 2016-05-31 2026-0 +1-15 103.533587 0.625000

Replies are listed 'Best First'.
Re^2: File content sorting based on type
by johngg (Canon) on May 31, 2016 at 18:04 UTC

    Your

    my @lines; while (<DATA>) { push @lines,$_; }

    could more simply be written as

    my @lines = <DATA>;

    Rather than reading the file into an array, sorting it using a routine then printing it out, you could sort and print directly using a GRT.

    $ perl -Mstrict -Mwarnings -E ' open my $inFH, q{<}, \ <<EOD or die $!; 912828Q86 Note 1-Year 2016-05-25 2016-05-27 2018-0 +4-30 100.003850 NULL 912796HD4 Bill 4-Week 2016-01-26 2016-01-28 2016-0 +2-25 99.977056 NULL 912810RS9 Bond 30-Year 2016-05-12 2016-05-16 2046-0 +5-15 97.619462 2.500000 912810RQ3 Bond 29-Year 2016-04-14 2016-04-15 2046-0 +2-15 98.011430 2.500000 912796HD4 Bill 4-Week 2016-01-26 2016-01-28 2016-0 +2-25 99.977056 NULL 912828N71 Note 9-Year 2016-05-19 2016-05-31 2026-0 +1-15 103.533587 0.625000 EOD print for map { unpack q{x4a*}, $_ } sort map { pack q{a4a*}, ( split )[ 1 ], $_ } <$inFH>;' 912796HD4 Bill 4-Week 2016-01-26 2016-01-28 2016-0 +2-25 99.977056 NULL 912796HD4 Bill 4-Week 2016-01-26 2016-01-28 2016-0 +2-25 99.977056 NULL 912810RQ3 Bond 29-Year 2016-04-14 2016-04-15 2046-0 +2-15 98.011430 2.500000 912810RS9 Bond 30-Year 2016-05-12 2016-05-16 2046-0 +5-15 97.619462 2.500000 912828N71 Note 9-Year 2016-05-19 2016-05-31 2026-0 +1-15 103.533587 0.625000 912828Q86 Note 1-Year 2016-05-25 2016-05-27 2018-0 +4-30 100.003850 NULL $

    Note that this code is a little naive in that it relies on the words in the sorting column all being the same length. More robust would be to use unpack, or perhaps substr, rather than split to extract the entire column for sorting including any trailing spaces so that the code would cope if "Invoice" cropped up.

    I hope this is of interest.

    Cheers,

    JohnGG

      Yes, you are quite correct about the input while loop!
      I was thinking that there is some filtering or other actions that are not apparent from the OP's posted data. Whatever that other stuff is, it can be put inside the while loop. So this is kinda like a "place holder". But you are completely correct. The code that I wrote could be more compact.

      And yes, a well written GRT will out perform other sorting options. True. However GRT (Guttman Rosler Transform) and ST (Schwartzian Transform) are advanced techniques that come after mastering basic sorting, which I don't think the OP has a solid handle upon yet. And in addition not every sort has to optimized to the nth degree.

      We were both trying to be helpful. Whether or not this helped the OP remains to be seen. However, some posts have "teachable" moments past the current problem. Your post re: GRT may activate some other brain cells out there.