Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了perl – 来自哪个错误“使用未初始化的值在字符串ne”?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
the below code的未初始化值在哪里?
#!/usr/bin/perl
use warnings;

my @sites = (undef,"a","b");
my $sitecount = 1;
my $url;

while (($url = $sites[$sitecount]) ne undef) {
   $sitecount++;
}

输出:

Use of uninitialized value in String ne at t.pl line 6.
Use of uninitialized value in String ne at t.pl line 6.
Use of uninitialized value in String ne at t.pl line 6.
Use of uninitialized value in String ne at t.pl line 6.

解决方法

您不能在没有警告的字符串比较中使用undef.
if ("a" ne undef) { ... }

会发出警告.如果要测试变量是否被定义,请使用:

if (defined $var) { ... }

关于原始问题的评论:

这是一个奇怪的方式来迭代一个数组.更常见的做法是:

foreach my $url (@sites) { ... }

并将$sitecount变量完全删除,并且不要在循环体中覆盖$url.也删除该数组中的undef值.如果您不想因某种原因(或期望未定义的值插入到该位置)来删除该undef,则可以执行以下操作:

foreach my $url (@sites) {
  next unless defined $url;
  ...
}

如果您想要使用循环构造的形式测试未定义,则需要:

while (defined $sites[$sitecount]) {
  my $url = $sites[$sitecount];
  ...
  $sitecount++;
}

以避免警告,但要注意自动化,如果在其他活动值之间存在undefs,则循环将停止.

大佬总结

以上是大佬教程为你收集整理的perl – 来自哪个错误“使用未初始化的值在字符串ne”?全部内容,希望文章能够帮你解决perl – 来自哪个错误“使用未初始化的值在字符串ne”?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。