2011-02-10 84 views
0

我有一個創建IP地址數組的子例程,但是我不知道有多少IP會被推入數組中。 (根據txt文件中的匹配數)然後我有另一個需要從數組中取得每個IP地址並分配一個變量的子。所有IP將被打印在同一行輸出中。我想這樣做:Perl將變量分配給未知數組數值

@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"; 

在此先感謝!

回答

9

在技術上可以做你所問的,但它不是一個好的解決方案。因爲即使魔術$IPS變量會在每次訪問時沿陣列走動,您仍然沒有輸出的vserver#部分。

相反,爲什麼不寫一個循環來處理數組:

print join(', ' => map {"vserver$_ $IPS[$_ - 1]"} 1 .. @IPS), "\n"; 
+0

感謝您對這個工作非常出色 – dars33 2011-02-10 16:15:30

3
my @items; 
my $index; 
foreach my $ip (@IPS) { 
    $index++; 
    push @items, "vserver$index $ip"; 
} 
print join(', ', @items), "\n"; 
+0

謝謝你的解決方案的解決方案! – dars33 2011-02-10 16:15:54