2011-02-10 4 views
0

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に変数を割り当て、次にそれを呼び出すときに2番目のIPに割り当てられた同じ変数を割り当てることは可能ですか?

print "vserver1 $IPS, vserver2 $IPS, vserver3 $IPS, vserver4 $IPS\n"; 

ありがとうございました!

答えて

9

あなたが求めていることは技術的に可能ですが、この問題の良い解決策ではありません。なぜなら、魔法の$IPS変数が各アクセスで配列に沿って歩いていても、出力の部分はまだvserver#ではないからです。

代わりに、なぜ配列を処理するためにループを書きません:

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

が、これは – dars33

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

がソリューションをありがとう非常によく働いたソリューションをありがとう! – dars33

関連する問題