【发布时间】:2017-02-13 10:51:34
【问题描述】:
所以我在 perl 方面有点菜鸟,但本质上这段代码是我模型的一部分(插入到 sql 数据库中)。
我在运行此代码时遇到的错误是“不能使用未定义的值作为 HASH 引用”。
我认为明确的解决方案是定义一个包含名为 host_id 的键的哈希。
我将如何处理或修复我的代码。
####delete subfunctions
######
sub deletehostservices
{
my ($self, $host_service_id) = @_;
my $host_id = $self->pg->db->query('DELETE from hosts_services where hosts_services_id = ? returning host_id', $host_service_id)->hash->{host_id};
return $host_id;
}
【问题讨论】:
-
query方法是否返回具有hash方法的内容?您需要查阅您的文档。也可能是您的 SQL 不正确。您是否看到来自数据库的任何错误消息? -
查询方法在其他情况下工作正常,我相信是声明 host_id 分配作为哈希的一部分导致了这里的错误。
-
使用Data::Printer先dump出查询方法的返回值。如果这没有帮助,请查看 hash 方法的返回值。你得到的错误是指你的箭头链的最后一部分。方法 hash 返回 undef,你尝试像 hash ref 一样访问它。
-
您确定语法正确吗? (哈希键应该用大括号括起来;例如
$hash->{key}->{another_key}->{and_another_key}) -
原因很明显
hash正在返回undef,但是如果没有更多信息,很难说为什么会发生这种情况。$self是什么类?它是来自 CPAN 模块还是您自己编写的?在继续使用其结果之前,您需要检查数据库操作是否成功。
标签: perl mojolicious hashref