任何人都可以让我知道如何从标量变量(相当于散列引用)中创建一个数组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)。
感谢您的帮助!
答案 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 ]];