我有一个创建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";
提前感谢!
答案 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";