http://www.perlmonks.org?node_id=1008202


in reply to Accessing or printing key and value

Your code, your sample data and your question are so far apart that in the end I decided to ignore your code and produced the following sample for you to consider:

use strict; use warnings; my %jobs; while (<DATA>) { chomp; next if ! /\S/; my @parts = split; push @{$jobs{$parts[1]}}, $_; } print "$_\n" for map {join "\n", @{$jobs{$_}}} sort keys %jobs; __DATA__ DOABIL3020 ITSD-ENT_OP-DMSB-DIDS Ora DOABIL309 EXE-SOS-3201_DFLT Ora DOABIL3400 ITSD-ENT_OP-ETSB-MID PRD DOABIL5310 ITSD-ENT_OP-ETSB-MID TST DOABIL6230 EXE-SOS-3201_DFLT PRD DOABIL7001 ITSD-ENT_OP-ETSB-EAS PRD DOABIL7005 ITSD-ENT_OP-AIMB-DCSEC PRD DOABIL7006 ITSD-ENT_OP-AIMB-DCSEC PRD DOABIL7504 EXE-SOS-3201_DFLT PRD DOABIL7581 ITSD-ENT_OP-NTSB-NET PRD DOABIL7582 ITSD-ENT_OP-NTSB-NET PRD DOABIL7583 ITSD-ENT_OP-NTSB-NET PRD

Prints:

DOABIL309 EXE-SOS-3201_DFLT Ora DOABIL6230 EXE-SOS-3201_DFLT PRD DOABIL7504 EXE-SOS-3201_DFLT PRD DOABIL7005 ITSD-ENT_OP-AIMB-DCSEC PRD DOABIL7006 ITSD-ENT_OP-AIMB-DCSEC PRD DOABIL3020 ITSD-ENT_OP-DMSB-DIDS Ora DOABIL7001 ITSD-ENT_OP-ETSB-EAS PRD DOABIL3400 ITSD-ENT_OP-ETSB-MID PRD DOABIL5310 ITSD-ENT_OP-ETSB-MID TST DOABIL7581 ITSD-ENT_OP-NTSB-NET PRD DOABIL7582 ITSD-ENT_OP-NTSB-NET PRD DOABIL7583 ITSD-ENT_OP-NTSB-NET PRD

I can't tell which field you really want to sort on so I took a guess.

As others have suggested: you should always use strictures (use strict; use warnings;). Also, remove code that is no longer relevant (use a revision control system if you think you may need to go back to a past version of the code) and find an indentation scheme that works for you and stick with it. Consistent and accurate indentation can make your code much easier to understand!

True laziness is hard work