-4

私は次のものを持っています:

my $v = "value";
my $v1 = "value";
my @v2 = ("v3", v4");

v、v1、およびv2の要素を含むforeachを作成するにはどうすればよいですか?次のようなものです:

foreach my $element ($v, $v1, @v2) {
 # Do something with the element. 
}

本質的に私はそれが同等であることを望みます

foreach my $element ($v, $v1, $v3, $v4) {

}
4

2 に答える 2

1
foreach my $element ($v, $v1, @v2) { ... }

と同等です

foreach my $element ($v, $v1, $v2[0], $v2[1], ..., $v2[$#v2]) { ... }

それはまさにあなたがやりたいことのようです。

于 2013-03-07T04:03:55.050 に答える
0

ただし、あなたの質問は少し不明確です。つまり、v、v1、およびv2の要素を含むforeachがあります。これは、(表記法で)行うことです。

my $v = "value1";
my $v1 = "value2";
my @v2 = ("v3", "v4");

foreach my $element($v, $v1, @v2) {
    print $element . "\n";
}

これにより、次の出力が得られます。

value1
value2
v3
v4

これはどのように作動しますか?foreachループは、制御変数(VAR)をリストの連続する各要素に設定することにより、値のリストを反復処理します。

foreach VAR (LIST) {
    ...
}

あなたの場合、制御変数名は$ elementであり、リストとその値は次のとおりです:($ v、$ v1、@ v2) -または、より明示的には:("value1"、 "value2"、 "@ v2 [0 ] "、" @ v2 [1] ")-これは-と考えることができます-(しかし実際にはそうではありません)次のようになります:(" value1 "、" value2 "、" v3 "、" v4 ")

そして、池上警告のとおり、参考までに:ループ内の$ element値を変更すると、リストに保持されている値も変更されます。

于 2013-03-07T04:05:04.957 に答える