my %actions = ( '000005' => { '1205' => [ 58, 62, ... ], '1210' => [ 56, 60, ... ], ... }, '000015' => { '1215' => [ 28, 30, ... ], '1230' => [ 26, 28, ... ], ... }, ); ... my $action = $actions[$field[11]; if ($action) { my $action2 = $action->{$timestamp}; if ($action2) { my ($maxarray, $field_ix, $whatever_else) = @$action2; if ($arraysize > $maxarray and $field[$field_ix] eq '') { .... } else { .... } } else { .... } } else { .... }