大佬教程收集整理的这篇文章主要介绍了在启用警告的perl中使用未定义的变量什么时候可以使用?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在没有警告的情况下可以使用未初始化/未定义的变量的情况如何?
>布尔测试
>递增或递减未定义的值
>附加到未定义的值
>自动化
>其他mutators
布尔测试
由于未定义的值为false,以下程序
#! /usr/bin/perl use warnings; my $var; print "A\n" if $var; $var && print "B\n"; $var and print "C\n"; print "D\n" if !$var; print "E\n" if not $var; $var or print "F\n"; $var || print "G\n";
输出D到G,没有警告.
递增或递减未定义的值
如果您的代码将递增或递减至少一次,则不需要将标量显式初始化为零:
#! /usr/bin/perl use warnings; my $i; ++$i while "aaba" =~ /a/g; print $i,"\n";
上面的代码输出3,没有警告.
附加到未定义的值
与隐含的零类似,如果你至少要附加一次,就不需要明确地将标量初始化为空字符串:
#! /usr/bin/perl use warnings; use strict; my $str; for (<*>) { $str .= substr $_,1; } print $str,"\n";
自动激活
一个例子是“自动化”.从Wikipedia article:
例如:
#! /usr/bin/perl use warnings; my %foo; ++$foo{bar}{baz}{quux}; use Data::Dumper; $Data::Dumper::Indent = 1; print Dumper \%foo;
即使我们没有明确地初始化中间密钥,Perl负责脚手架:
$VAR1 = { 'bar' => { 'baz' => { 'quux' => '1' } } };
没有自动化,代码将需要更多的样板:
my %foo; $foo{bar} = {}; $foo{bar}{baz} = {}; ++$foo{bar}{baz}{quux}; # finally!
不要将自动化与其可以产生的未定义值混淆.例如与
#! /usr/bin/perl use warnings; my %foo; print $foo{bar}{baz}{quux},"\n"; use Data::Dumper; $Data::Dumper::Indent = 1; print Dumper \%foo;
我们得到
Use of uninitialized value in print at ./prog.pl line 6. $VAR1 = { 'bar' => { 'baz' => {} } };
请注意,中间密钥自动修复.
自动化的其他例子:
>引用数组
my $a; push @$a => "foo";
>引用标量
my $s; ++$$s;
>引用哈希
my $h; $h->{foo} = "bar";
可悲的是,Perl没有(还有)自动更新以下内容:
my $code; $code->("Do what I need please!");
其他mutators
In an answer to a similar question,ysth报道
被定义为“或”// =愉快地突变未定义的值而不发出警告.
以上是大佬教程为你收集整理的在启用警告的perl中使用未定义的变量什么时候可以使用?全部内容,希望文章能够帮你解决在启用警告的perl中使用未定义的变量什么时候可以使用?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。