in reply to Re^2: Sorting an array of strings when some of the strings have commas in them?
in thread Sorting an array of strings when some of the strings have commas in them?

No, it doesn't help. It still sorts correctly:
#!/usr/bin/perl use warnings; use strict; use feature qw{ say fc }; *ARGV = *DATA{IO}; my $column_line = ""; $column_line = <> while $column_line !~ /Invoice ID/i; chomp( my @columns = split /\t/, $column_line ); chomp( my @data_lines = <> ); # Sort the data lines according to the "Company Name" field, and then +the "Invoice ID" field. my ($company_name_index) = grep { $columns[$_] eq "Company Name" } 0 . +. $#columns; my ($invoice_ID_index) = grep { $columns[$_] eq "Invoice ID" } 0 .. $# +columns; @data_lines = sort { my ($company_name_a, $invoice_ID_a) = (split /\t/, $a)[$company_na +me_index, $invoice_ID_index]; my ($company_name_b, $invoice_ID_b) = (split /\t/, $b)[$company_na +me_index, $invoice_ID_index]; fc($company_name_a) cmp fc($company_name_b) or $invoice_ID_a <=> $invoice_ID_b } @data_lines; print "Replacement Header Text Here\n\n$column_line"; say for @data_lines; __DATA__ Original Header Text Invoice ID Company Name 1 SEBASTIAN COMMUNICATIONS 2 MASQUE SOUND 3 SEALEVEL SYSTEMS 4 MASSTECH, INC 5 SE INTERNATIONAL 6 SOUTHEAST SERVO, LLC 7 SEALEVEL SYSTEMS, INC. 8 MASTERBILT
My guess: the indices are wrong. Your code sorts the file by a different column.
($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,