in reply to Can't get the right array value

If you intend for it to make a decision based on "each element of this array", then the decision making code (if..elsif) needs access to all of the elements. Currently it stops iterating because the return is inside the foreach block. Once you've changed this you still need to change some logic regarding the "if ($l < 1)" block. After the first match this block will be skipped because $l is incremented and no longer less than 1. If I understand you correctly, then what you need is:
sub check_status { @status_atividades = @_; $status_possivel=""; foreach $status(@status_atividades) { if ($status eq "1" or $status eq "9") { $status_possivel .= "<option value=\"2\">Cancelada</op + +tion>\n"; $status_possivel .= "<option value=\"3\">Agendada</opt + +ion>\n"; } elsif ($status eq "3" or $status eq "9") { $status_possivel .= "<option value=\"4\">Em Análise Fu + +ncional</option>\n"; } } return($status_possivel); }
cheers, - danboo