0

所以我在 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;
    }
4

1 回答 1

0

当 Mojo::Pg 的->hash方法返回 undef 时,是因为没有返回任何行。

您可以将结果存储在具有默认值的临时变量中

my $res = $self->pg->db->query(
  'DELETE from hosts_services where hosts_services_id = ? returning host_id', $host_service_id
)->hash || {};
return $res->{host_id};

或其他几种模式中的任何一种来处理获取 undef。在这种情况下,上面是我喜欢的。

于 2017-03-08T00:06:16.287 回答