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";
答
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
感谢您对这个工作非常出色 – dars33 2011-02-10 16:15:30