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!
|
|---|