Perl присваивает переменные неизвестному количеству значений массива - PullRequest
0 голосов
/ 10 февраля 2011

У меня есть подпрограмма, которая создает массив IP-адресов, однако я не знаю, сколько IP-адресов будет помещено в массив.(основано на количестве совпадений в текстовом файле). Затем у меня есть другая подпрограмма, которая должна извлечь каждый IP-адрес из массива и назначить переменную.все IP будут напечатаны в одной строке вывода.Я хочу сделать что-то вроде этого:

@IPS = ("1.1.1.1", "1.1.1.2", "1.1.1.3", "1.1.1.4");  
print "vserver1 $IPS[0], vserver2 $IPS[1], vserver3 $IPS[2], vserver4 $IPS[3]\n";    

Проблема в том, что я не буду знать, сколько IP-адресов будет в массиве.Как я могу назвать неизвестное количество значений?Можно ли назначить переменную первому IP, затем ту же переменную, назначенную второму IP при следующем вызове?

print "vserver1 $IPS, vserver2 $IPS, vserver3 $IPS, vserver4 $IPS\n";  

заранее спасибо!

Ответы [ 2 ]

9 голосов
/ 10 февраля 2011

Технически возможно сделать то, что вы просите, но это не хорошее решение для этой проблемы.Потому что даже если бы магическая переменная $IPS проходила по массиву при каждом доступе, у вас все равно не было бы части vserver# вашего вывода.

Вместо этого, почему бы не написать цикл для обработки массива:

print join(', ' => map {"vserver$_ $IPS[$_ - 1]"} 1 .. @IPS ), "\n";
3 голосов
/ 10 февраля 2011
my @items;
my $index;
foreach my $ip (@IPS) {
    $index++;
    push @items, "vserver$index $ip";
}
print join(', ', @items), "\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...