if(grep { defined and $_ ne "" } @array[9..13]) { &mysub(); ... } # or using your second example @array = qw(name address age date1 date2 date3 date4 date5); &your_function_here($_) for grep /date\d+/, @array;