3

私はまだPerlの初心者です。いくつかの配列を取り、ループを使用せずに別の配列に入れようとしています。

my @array1 = ("abc", "def", "ghi", "jkl", "mno", "pqr");
my @array2=$array1[2 .. 4];

しかし、それは機能しません。

@array2 の結果が「def ghi jkl」であることを望みます。

4

3 に答える 3

3

@スカラー マーカー ( $)の代わりに配列スライスを使用する必要があります。

my @array1 = ("abc", "def", "ghi", "jkl", "mno", "pqr"); 
my @array2=@array1[2 .. 4];              # ====> @array1 not $array1
print join(",", @array2), "\n";
于 2012-12-04T07:06:34.393 に答える
2

リスト スライスの構文は@array[EXPR](not $array[EXPR]) であるため、

my @array2 = @array1[2..4];

上記には 3 つのループがあることに注意してください。ループを避けたい場合は、使用する必要があります

my @array2;
$array2[0] = $array1[2];
$array2[1] = $array1[3];
$array2[2] = $array1[4];

ただし、リクエストにもかかわらず、実際にループを避けたかったとは思えません。

于 2012-12-04T07:46:29.347 に答える
1

ステートメントを以下に変更します。

@array2=@array1[2..4];
于 2012-12-04T07:08:41.237 に答える