2017-07-31 42 views
-6

私はこのようになりますされ、Perlでコードの一見基本的な部分を理解していない:Perl:文字列の後の二重角括弧の意味ですか?

$line[$k][1] 

ダブル二乗括弧の意味は何ですか?

これは既に尋ねられているか、または基本的なものであれば、Perlのすべての初心者の本で見つけることができます。どこでも見つけることができませんでした。

+0

これは2D配列の要素です。これは、要素の配列参照を持つ配列です(my @ary =([1,2]、[4,5]);))。そして、あなたが求めるのは配列参照の '1'インデックス付き要素です。これは' @行 '配列の' $ k'インデックス要素です。完全な構文は '$ line [$ k] - > [1]'ですが、ここでは矢印を削除することができます。私の '@ ary'の例では' $ ary [1] [1] 'は' 5'です。 – zdim

答えて

1

つまり、2次元配列で作業しています。

#!/usr/bin/env perl 

use strict; 
use warnings; 

my @stuff = ( 
    [ 1, 2, 3, 4 ], 
    [ 5, 6, 7, 8 ], 
); 

print $stuff[1][2]; 
#prints '7' 
0

[..]は配列インデックスである。 2つがあれば、それは配列の配列であることを意味します。あなたの例では@line$k番目の要素の2番目の要素(インデックスは0から始まります)を取得しています。 my @line;

の線に沿って何かがコードが上部にuse strict;use warnings;を持っていることを確認してくださいと言っラインがあるはずとあなたはそれが文字列だと思う

は、おそらくコードは非常によく書かれていないサインですコードに問題が生じる可能性があります。

1

あなたが持っているものは「文字列」ではありません。これは@lineという配列で、@lineのすべての要素は別の配列への参照です。

Perl配列内の単一要素にアクセスすると、sigilは@(複数の値を意味する)から$(単一の値を意味する)に変化します。だから、配列のインデックス$kを持つ要素を検索するために使用する、@line呼ば:

$line[$k] 

しかし、あなたの例では、$line[$k]は別の配列への参照が含まれています。参照される配列の要素の1つへの配列参照を取得するには、->[...]の構文を使用します。だから、@line$k番目の要素で参照される配列の2番目の要素は次式で与えられます。

$line[$k]->[1]; 

とPerlで、我々は、配列(またはハッシュ)の2組のルックアップブラケットが分離されていることがルールを持っています逆参照配列だけで、その矢印を省略することができます。したがって、私の前の例は次のように単純化することができます:

$line[$k][1]; 
関連する問題