0

我正在使用 Perl 将 csv 文件插入 MySQL。我已经成功地将一些数据插入到 MySQL 中。但是 csv 文件中的某些字段为空,代码无法继续运行。

表达 if 语句以检查是否$rttjitter不为空,否则打印该行号,然后执行的正确方法是什么?

即2个标准:$rtt不等于0$rttjitter且不为空。

my $empty =  q{};

my @nulls = ();

if ($rtt !=0 && $rttjitter ne undef)

^ 这些不太好用。

4

2 回答 2

1

您可以使用内置的定义函数来显式检查变量是否已定义,例如

if( defined( $rttjitter ) and $rttjitter ) { ...

将检查它是否已定义并且值不是 0 或空字符串。

尽管您似乎应该再看一下您在 CSV 中的阅读方式(您正在使用Text::CSV之类的模块,对吗?)和/或您如何进行数据库插入,通常与此一样undef 值将作为 NULL 干净地插​​入到数据库中,并且不应该对您的代码造成任何问题,除非您正在做一些奇怪的事情。

于 2013-10-29T04:07:36.170 回答
0
if (defined($rttjitter) && defined($rtt) && $rtt != 0)
{
    ... # $rttjitter is not null (undef) and $rtt is not null (undef) and nonzero
}
else
{
    ... # at least one column fails the test
}
于 2013-10-29T04:03:20.783 回答