Прежде всего, пожалуйста, не используйте goto
. Каждый раз, когда вы используете goto
, младенец Иисус плачет, убивая котенка.
Во-вторых, ваш код немного сбивает с толку, поскольку вы, кажется, заполняете @address
после запуска оператора if($address[0] == '')
(не говоря уже о том, что if
должно быть if($address[0] eq '')
).
Если вы пытаетесь сравнить каждый элемент @address
с $ipaddress
на равенство, вы можете сделать что-то вроде следующего
Примечание: В этом коде предполагается, что вы заполнили @address
.
my $num_matches=0;
foreach(@address)
{
$num_matches++ if $_ eq $ipaddress;
}
if($num_matches)
{
#You've got a match! Do something.
}
else
{
#You don't have any matches. This may or may not be bad. Do something else.
}
В качестве альтернативы вы можете использовать оператор grep
для получения любых совпадений из @address
:
my @matches=grep{$_ eq $ipaddress}@address;
if(@matches)
{
#You've got matches.
}
else
{
#Sorry, no matches.
}
Наконец, если вы используете версию Perl 5.10
или выше, вы можете использовать оператор интеллектуального сопоставления (т.е. ~~
):
if($ipaddress~~@address)
{
#You've got a match!
}
else
{
#Nope, no matches.
}