首页 > 解决方案 > 如何在 Perl 的哈希中检测空字段?

问题描述

我正在使用 DBI 将 MySQL 表中的完整行提取到哈希中,并且无法弄清楚如何检测那些为空的字段。

下面的代码有点草率,因为我尝试了不同的方法来解决我的问题。本质上,下面的循环打印出 MySQL 第一行的内容。有些字段有数据,有些则没有。但是无论散列中的任何键是否指向数据,此循环都表明它们中的每一个都已定义,但为空。我会假设,我错过了一些如此简单的东西,但找不到它。

my %currec; 
foreach my $row (@{$data_all})
{
    say $row;
    %currec = %{$row};
    foreach my $columns (keys %currec) {
      my $text = $currec{$columns};
      say $text;
      if(undef($text))
      {
        say "$columns is NOT DEFINED";
      }
      elsif (length($text) < 1)
      {
        say "$columns DEFINED, but empty";
      }
    }
    exit;

}

标签: perlhashmap

解决方案


undef()取消定义变量并始终返回未定义的值...

尝试:

...
if(!defined($text))
...

推荐阅读