gpt4 book ai didi

arrays - 为什么会出现 "Not an ARRAY reference"错误?

转载 作者:行者123 更新时间:2023-12-04 13:08:54 25 4
gpt4 key购买 nike

我有这个脚本

#!/usr/bin/perl

use strict;
use warnings;

use yy;

my $data = [
["aax", "ert", "ddd"],
["asx", "eer", "kkk"],
["xkk", "fff", "lll"],
["xxj", "vtt", "lle"],
];

use Test::More tests => 4;

is(yy::type1_to_type2(\$data, 'aax'), 'ert');
is(yy::type1_to_type3(\$data, 'asx'), 'kkk');
is(yy::type2_to_type3(\$data, 'fff'), 'lll');
is(yy::type3_to_type1(\$data, 'lle'), 'xxj');

使用这个模块
package yy;

sub typeX_to_typeY {
my ($x, $y, $data, $str) = @_;

foreach (@$data) {
if ($_->[$x - 1] eq $str) {
return $_->[$y - 1];
}
}

return;
}

sub type1_to_type2 { typeX_to_typeY(1, 2, @_) }
sub type1_to_type3 { typeX_to_typeY(1, 3, @_) }
sub type2_to_type1 { typeX_to_typeY(2, 1, @_) }
sub type2_to_type3 { typeX_to_typeY(2, 3, @_) }
sub type3_to_type1 { typeX_to_typeY(3, 1, @_) }
sub type3_to_type2 { typeX_to_typeY(3, 2, @_) }

1;

并给出此错误
Not an ARRAY reference at yy.pm line 6.
# Looks like your test died before it could output anything.

它提示的路线是
foreach (@$data) {

这不是传递数组引用的方式吗?

我究竟做错了什么?

最佳答案

您正在创建对作为 $data 的引用的引用已经是一个数组引用 - 首先,它是一个标量,其次您使用方括号来初始化它的值。所以,改变你的电话使用$data而不是 \$data .

关于arrays - 为什么会出现 "Not an ARRAY reference"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5301214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com