#!/usr/bin/perl use warnings; use strict; use feature "switch"; my %Hash = (); $Hash{"FEB"}{"W1"}=10.14; $Hash{"FEB"}{"W2"}=11.22; $Hash{"MAR"}{"W1"}=33.17; $Hash{"MAR"}{"W2"}=44.44; $Hash{"APR"}{"W1"}=55.00; $Hash{"APR"}{"W2"}=66.66; my $FEB_L1_W1 = 11; my $FEB_U1_W2 = 13; my $APR_L1_W1 = 1; my $APR_U1_W2 = 13.02; for my $month ( keys %Hash ) { print "$month: "; for my $week ( keys %{ $Hash{$month} } ) { print "$week=$Hash{$month}{$week} \n"; given ($month) { when ('FEB') { if ( $week eq "W1" ) { if ( ( $FEB_L1_W1 <= $Hash{$month}{$week} ) and ( $Hash{$month}{$week} <= $FEB_U1_W2 ) ) { print "month $month has f status for $week: $Hash{$month}{$week}\n"; } else { print "error: print something"; } } elsif ( $week eq "W2" ) { if ( ( $FEB_U1_W2 <= $Hash{$month}{$week} ) and ( $Hash{$month}{$week} <= $FEB_U1_W2 ) ) { print "month $month has f status for $week: $Hash{$month}{$week}\n"; } else { print "error: print something\n"; } } } when ('APR') { # same as above check for lower , upper values print "it is $month here\n";} } } }