Skif AnnA Еще раз. 
NeoNox же сказал где ошибка, а я еще добавил почему...
my @array = (\'1\', \'2\', \'3\', \'4\', \'5\');
foreach my $unit (@array) {
   $unit = \'1\';
}
print @array;
вывод:
11111
но никак не 12345, $unit - был, есть и будет элементом массива @array.
Строкой 
($exist_port,$ot)=split("-",$exist_port);
ты указываешь новое значение текущему элементу массива.
Вообще согласен с 
NeoNox в том что это:
вычурная конструкция для проверки уже существующих элементов
А приписка, потому что дал точно такой же ответ что и 
NeoNox только на пару минут позже... 
