2

具有以下数据结构。我想为键 TUESDAY 打印整个数组。尝试了以下方法,但它不起作用。我不希望有一个额外的语句来获取对变量的数组引用并稍后打印出来。我想在 print 函数中的单个语句中执行此操作。

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";
4

4 回答 4

4
print "array val: " . join (' ', @{ $FILE_LIMIT->{ISANE}->{TUESDAY} }), "\n";
于 2013-05-02T05:23:06.380 回答
2

如您所料,数组引用位于 at $FILE_LIMIT->{ISANE}{TUESDAY},因此使用取消引用它

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

输出

array val: 10 20 30 40
于 2013-05-02T05:27:07.197 回答
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
于 2013-05-02T05:30:03.340 回答
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}});
于 2013-05-05T10:54:43.403 回答