Perl:在哈希中使用标量变量进行数组引用

时间:2014-11-01 00:40:31

标签: arrays perl data-structures hash

任何人都可以让我知道如何从标量变量(相当于散列引用)中创建一个数组ref?我到目前为止的代码是:

#! /usr/bin/perl
use strict;

my $index=0;
my $car={};

$car->{model}[$index]="Tesla";
my $texxt = $car->{model}[$index];
@{$texxt}=qw(1 2 3);

print "@{$texxt}";

这会出现以下错误: 在test99.pl第8行使用“strict refs”时,不能使用字符串(“Tesla”)作为ARRAY引用。

基本上我正在尝试创建一个名为“@Tesla”的数组(或数组引用),它具有值(1 2 3)。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

如果你想要一个名为“model”的键的哈希,它包含一个数组,其中“Tesla”作为第一个元素,一个匿名数组作为第二个元素(texxt作为快捷方式引用)然后这会起作用

#! /usr/bin/perl
use strict;

my $index=0;
my $car={};

$car->{model}[$index]="Tesla";
my $texxt = $car->{model} ;
push @{$texxt} , [qw(1 2 3)];

print ref eq "ARRAY" ? "@{$_}" : "$_ " for @{$texxt} ;

输出:Tesla 1 2 3

您可以使用Data::Printer以格式良好的方式查看数据结构:

use DDP;
p $texxt;

输出:

\ [
    [0] "Tesla",
    [1] [
        [0] 1,
        [1] 2,
        [2] 3
    ]
]

这可以帮助您直观地了解perl对您的数据所做的工作。

答案 1 :(得分:0)

如果$ texxt是一个字符串(它不是散列引用),则不能将其取消引用为数组。但是,您可以为其分配匿名数组:

$texxt = 'Tesla';
$texxt = [qw[ 1 2 3 ]];