2013-05-02 193 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}});