#!/usr/bin/perl use strict; use warnings; chomp (my @data_lines = ); # Sort the data lines according to the "Company Name" field and then the "Invoice ID" field. @data_lines = sort { my ($company_name_a, $invoice_ID_a) = (split /~/, $a)[0, 1]; my ($company_name_b, $invoice_ID_b) = (split /~/, $b)[0, 1]; ($company_name_a) cmp ($company_name_b) or $invoice_ID_a <=> $invoice_ID_b } @data_lines; print "$_\n" for @data_lines; __DATA__ SEALEVEL SYSTEMS~1 SEALEVEL SYSTEMS, INC.~2 SEBASTIAN COMMUNICATIONS~3 MASQUE SOUND~4 MASSTECH, INC~5 MASTERBILT~6 SE INTERNATIONAL~7 #### MASQUE SOUND~4 MASSTECH, INC~5 MASTERBILT~6 SE INTERNATIONAL~7 SEALEVEL SYSTEMS~1 SEALEVEL SYSTEMS, INC.~2 SEBASTIAN COMMUNICATIONS~3