Warum "Nicht ein ARRAY reference" - Fehler?
Habe ich dieses Skript
#!/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');
verwendet dieses Modul
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;
und gibt diese Fehler
Not an ARRAY reference at yy.pm line 6.
# Looks like your test died before it could output anything.
Die Leitung beschwert, ist
foreach (@$data) {
Ist nicht der Weg, um ein array übergeben Referenz?
Was mache ich falsch?
InformationsquelleAutor Sandra Schlichting | 2011-03-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie eine Referenz auf eine Referenz als
$data
ist bereits eine array-Referenz - Erstens, ist es ein Skalar und zweitens werden Sie verwendet eckige Klammern initialisieren Sie Ihren Wert. So ändern Sie Ihre Anrufe zu verwenden$data
eher als\$data
.InformationsquelleAutor a'r
$data = []
ist eine Referenz auf array. Durch die Verwendung\$data
erstellen Sie eine Referenz auf einen Skalar.Ändern Sie den code:
InformationsquelleAutor Eugene Yarmash