我正在使用 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;
}
Run Code Online (Sandbox Code Playgroud)
undef() 取消定义变量并始终返回未定义的值...
尝试:
...
if(!defined($text))
...
Run Code Online (Sandbox Code Playgroud)