在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中,它有点容易,因为 use 5.012; use warnings; my $name; if( length $name ) { # no warning ... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |