Perl: face à “ne Pouvez pas utiliser la chaîne XX comme un TABLEAU ref tandis que strict ”refs“ d'avertissement”
J'ai
my $test_case_list = [
+{
label => &config->current->{'DBI'}[0],
expected => 'dbi:mysql:dbname=investometrica',
},
+{
label => &config->current->{'maintenance_file_path'}[0],
expected => '/var/tmp/',
},
];
for my $test_case_item (@$test_case_list) {
my $label = @{ $test_case_item->{label} };
my $expected = @{ $test_case_item->{expected} };
is ( $label, $expected, "Match");
}
Cela me donne une terrible avertissement:
Ne pouvez pas utiliser des chaînes de caractères ("dbi:mysql:dbname=investometrica") comme un TABLEAU ref tandis que strict "refs" en cours d'utilisation à la config.t ligne 25.
Ce que je fais mal?
$test_case_item->{expected}
est une chaîne de caractères, pourquoi êtes-vous de la coulée dans une liste?- Lire le message d'erreur. Il vous dit que vous êtes en train d'utiliser une chaîne dans un tableau de référence. Arrêter de faire ça.
- sur une liste" n'est pas un concept perl
Vous devez vous connecter pour publier un commentaire.
Les éléments de
@$test_case_list
sont de hachage références, dont les touches sontlabel
etexpected
. Les valeurs pour les deux clés sont des scalaires (qui ne sont pas des références de tableau). Si vous ne pouvez pas et/ou qu'il ne faut pas les traiter comme des références de tableau. Mais c'est ce que vous faites si vous utilisez@{...}
sur eux (comme dans@{ $test_case_item->{label} }
). Car ils sont déjà les scalaires avec la valeur que vous souhaitez, vous devez juste aller avec$test_case_item->{label}
à la place.