加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Perl中,我如何精确检查$变量是否已定义并包含非零长度字符串?

发布时间:2020-12-15 21:28:49 所属栏目:大数据 来源:网络整理
导读:我目前使用以下Perl来检查变量是否已定义并包含文本。我必须首先检查定义,以避免“未初始化值”警告: if (defined $name length $name 0) { # do something with $name} 有没有更好的(大概更简洁)的方式来写这个? 解决方法 你经常看到定义的检查,所以你
我目前使用以下Perl来检查变量是否已定义并包含文本。我必须首先检查定义,以避免“未初始化值”警告:
if (defined $name && length $name > 0) {
    # do something with $name
}

有没有更好的(大概更简洁)的方式来写这个?

解决方法

你经常看到定义的检查,所以你不必处理使用undef值的警告(在Perl 5.10它告诉你的错误变量):
Use of uninitialized value $name in ...

所以,为了解决这个警告,人们想出了各种各样的代码,并且该代码开始看起来像解决方案的重要部分,而不是泡泡糖和管道胶带,它是。有时,最好通过明确关闭您要避免的警告来显示您的操作:

{
 no warnings 'uninitialized';

 if( length $name ) {
      ...
      }
 }

在其他情况下,使用某种空值而不是数据。使用Perl 5.10’s defined-or operator,您可以给长度一个显式的空字符串(定义,并回零长度),而不是将触发警告的变量:

use 5.010;

 if( length( $name // '' ) ) {
      ...
      }

在Perl 5.12中,它有点容易,因为length on an undefined value also returns undefined.这可能看起来像一点蠢,但是喜欢我可能想要的数学家。这不会发出警告,这是这个问题存在的原因。

use 5.012;
use warnings;

my $name;

if( length $name ) { # no warning
    ...
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读