in reply to Print something when key does not exist

Here is how I would change your code:
#!/usr/bin/perl use warnings; use strict; use Syntax::Construct qw( // ); my %map; my $sep = '^'; my @flds; # Loop through the lines and create hashmap while (my $line = <DATA>) { chomp $line; @flds = split /\^/, $line; next if 1 == $.; $map{$flds[0]}{$flds[1]} = $flds[2]; } # Print the header line print "Name"; my %codes; undef @codes{map keys %$_, values %map}; for my $k (sort keys %codes){ print "$sep$k"; } print "\n"; # Print the table for my $k1 (sort keys %map) { print $k1; for my $k2 (sort keys %codes) { print "$sep", $map{$k1}{$k2} // q(); } print "\n"; }

You can profit from the // operator to avoid undefined warnings, but only if your Perl is 5.10+. Also, I extracted the codes from the %map hash (no need to create a hash reference) with a "slice". But all these are just minor things. Moreover, you correctly identified the places where the code didn't flow smoothly.

لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

Replies are listed 'Best First'.
Re^2: Print something when key does not exist
by jaypal (Beadle) on Apr 06, 2014 at 00:51 UTC

    Thank you so much Choroba. Your module looks interesting. I have been following your answers on StackOverflow and it's not just perl solution that has been helpful. Have learnt alot from awk, sed and bash as well.

    Appreciate it.

    Regards, Jaypal

    http://stackoverflow.com/users/970195/js