Perl将变量分配给未知数组数值

问题描述:

我有一个创建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"; 

在此先感谢!

在技术上可以做你所问的,但它不是一个好的解决方案。因为即使魔术$IPS变量会在每次访问时沿阵列走动,您仍然没有输出的vserver#部分。

相反,为什么不写一个循环来处理数组:

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

感谢您对这个工作非常出色 – dars33 2011-02-10 16:15:30

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