2017-07-31 61 views
-6

我不明白的代碼在Perl看似基本的一塊,它看起來像這樣:Perl:字符串後雙方括號的含義?

$line[$k][1] 

什麼是雙方括號的含義是什麼?

我很抱歉,如果這已經要求或者是如此基本可以在每一個初學者的書的Perl找到。我找不到它的任何地方

+0

這是一個二維數組的元素。這是一個數組,它對於元素具有數組引用(如'my @ary =([1,2],[4,5]);')。然後你要求的是arrayref的'1'-indexed元素,它是'@ line'數組的'$ k'-indexed元素。完整的語法是'$ line [$ k] - > [1]'但是(在這裏)箭頭可能被丟棄。在我的'@ ary'例子中'$ ary [1] [1]'是'5'。 – zdim

回答

1

這意味着你有一個二維數組工作。

#!/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

A [..]是一個數組索引。如果你有2個,那意味着它是一個數組數組。在你的例子中,你得到@line$k th元素的第二個元素(索引從0開始)。

那你認爲這是一個字符串,可能是一個標誌代碼是不是寫的非常好,因爲要沿着my @line;

行線說着什麼確保代碼中有use strict;use warnings;頂部這應該會引發代碼的任何問題。

1

這意味着你有沒有「串」。這就是所謂的@line陣列並且在@line每個元素是到另一個數組的引用。

當您訪問Perl數組中的單個元素時,sigil從@(意味着多個值)變爲$(這意味着一個值)。因此,要查找與指數$k的元素稱爲@line一個數組,你使用:

$line[$k] 

但在你的榜樣,$line[$k]包含對另一個數組的引用。爲了從數組引用中獲取引用數組的其中一個元素,我們使用->[...]語法。因此,通過的@line$k個元素所引用的數組的第二個元素是由下式給出:

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

而且在Perl,我們有一個規則,當兩組陣列(或散列)的查找支架分離通過一個解引用數組,我們可以省略那個箭頭。所以,我前面的例子可以簡化爲:

$line[$k][1];