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

dar*_*s33 0 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";    
Run Code Online (Sandbox Code Playgroud)

问题是,我不知道阵列中有多少IP.如何调用未知数量的值?是否可以将变量分配给第一个IP,然后在下次调用时分配给第二个IP的相同变量?

print "vserver1 $IPS, vserver2 $IPS, vserver3 $IPS, vserver4 $IPS\n";  
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Eri*_*rom 9

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

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

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