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

时间:2011-02-10 15:54:22

标签: arrays perl

我有一个创建IP地址数组的子例程,但我不知道有多少IP会被推入数组。 (基于txt文件中有多少匹配)然后我有另一个子需要从数组中提取每个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 个答案:

答案 0 :(得分:9)

技术上可以做你要求的事情,但这不是解决这个问题的好方法。因为即使每个访问都有一个魔术$IPS变量沿着数组行走,你仍然没有输出的vserver#部分。

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

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

答案 1 :(得分:3)

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