2013-05-02 135 views
2

具有以下數據結構。我想打印關鍵TUESDAY的整個數組。嘗試下面的方式,但它不工作。我不想有一個額外的聲明,將數組引用賦給一個變量,然後再打印出來。我想在打印功能的單個語句中完成它。散列和數組的Perl散列 - 打印數組內容

my $FILE_LIMIT = { 
    CHECK => "ON", 
    ISANE => { 
     CHECK  => "ON", 
     MONDAY => 33, 
     TUESDAY => [10, 20, 30, 40], 
     WEDNESDAY => 12, 
     THURSDAY => 13, 
     SATURDAY => 14, 
     SUNDAY => 15 
    } }; 

print "array val: " . $FILE_LIMIT->{ISBANE}->{TUESDAY}[1 .. $#] . "\n"; 
+3

'ISBANE' ='ISANE' – 2013-05-02 05:26:32

+4

@JimGarrison:不,ISBANE NE ISANE :) – Borodin 2013-05-02 05:28:54

+0

我是一個Perl的小白。我們可以使用'$'聲明散列嗎?我認爲你使用'%'是哈希值。 – vidit 2013-05-02 05:29:59

回答

4
print "array val: " . join (' ', @{ $FILE_LIMIT->{ISANE}->{TUESDAY} }), "\n"; 
+0

我認爲你可以放棄加入 - print「array val:@ {$ FILE_LIMIT - > {ISANE} - > {TUESDAY}} \ n」; – erickb 2013-05-02 05:26:53

+0

@erickb - 你是對的。因爲我正在加入'空白'。它是出於習慣而完成的。 – chrsblck 2013-05-02 05:40:19

+0

非常感謝信息 – Arav 2013-05-02 05:41:22

2

如你已經猜到,陣列參考是在$FILE_LIMIT->{ISANE}{TUESDAY},所以解除引用它使用

print "array val: @{$FILE_LIMIT->{ISANE}{TUESDAY}}\n"; 

輸出

array val: 10 20 30 40 
+0

非常感謝信息 – Arav 2013-05-02 05:45:52

2
print" @{ $FILE_LIMIT->{ISANE}->{TUESDAY}}\n"; 

輸出:

10 20 30 40 

你基本上是試圖取出陣列片在你的代碼,如果你要拿出只有數組的特定元素,試着去了解下面的代碼,將採取的是非常有用數組中的一些元素。

my @test = @{ $FILE_LIMIT->{ISANE}->{TUESDAY}}; 
print " @{$FILE_LIMIT->{ISANE}->{TUESDAY}}[1 .. $#test] \n"; 

輸出:

20 30 40 
+0

非常感謝ifno – Arav 2013-05-02 05:46:48

0
my $FILE_LIMIT = { 
    CHECK => "ON", 
    ISANE => { 
     CHECK  => "ON", 
     MONDAY => 33, 
     TUESDAY => [10, 20, 30, 40], 
     WEDNESDAY => 12, 
     THURSDAY => 13, 
     SATURDAY => 14, 
     SUNDAY => 15 
    } }; 

print $_,"\n",foreach(@{$FILE_LIMIT->{ISANE}->{TUESDAY}});