Perl关于usestrict的用法 strict用法

转载:Perl 关于 usestrict 的用法

Use Strict AndWarnings

什么场合要用 usestrict

当你的程序有一定的行数时,尤其是在一页放不下时,或者是你找不到发生错误的原因时。

为什么要用 use strict?

众多的原因之一是帮你寻找因为错误拼写造成的错误。比如错误使用了'$recieve_date' 变量,但实际上你在程序中已声明的是'$receive_date' 变量,这个错误就很难发现。同样,use strict迫使你把变量的范围缩到最小,使你不必担心同名变量在程序的其它部份发生不良作用。(尽管这是 my 的功能,但是如果你使用 usestrict 的话,它会强迫你用 my 声明变量,来达到上述目的)。

用 use strict 麻烦吗?

不麻烦,只要在你的脚本的开始加上11个字符而已!(use strict;), 另外在整个程序中用my 声明变量。

不错,那我怎么用 use strict 呢?

在你的脚本的开头 '#!/usr/local/bin/perl' 后面加上这句就行。

use strict;

得,程序出错了,我该怎么办?

常见的错误信息一般如下:

Global symbol "$xxx" requires explicit package name at ./tst line 5.

这就是需要我们马上去解决的错误。(如果出现类似于 'Server Error' 之类的错误,请检查一下你的 web 服务器上的 errorlogs,或用CGI::Carp包。 )

任何时候,当你要声明一个变量时,都要把 'my' 放在前面。例如:

# 把这段代码:$string = "hello world";@array = qw(ABC DEF);%hash = (A=>1, B=>2);# 改成:my $string = "hello world";my @array = qw(ABC DEF);my %hash = (A=>1, B=>2);# 把这段代码:# '$name' is global hereforeach $name (@names) { print "Name: $namen";}# 改成:foreach my $name (@names) { # Now '$name' only exists in this block print "Name: $namen";}# 把这段代码:# 同样, '$digit' 在这里是全局变量foreach $digit (@digits) { $number = 10== $number + $digit;}print "Number: $numbern";# 改成: (外层的变量('$number')# 将在外层声明):my $number = 0;foreach my $digit (@digits) # 现在'$digit' 仅仅在这个代码块里存在 $number = 10== $number + $digit;}print "Number: $numbern";# 把这段代码:sub my_sub { ($arg1, $arg2) = @_; print "Arg1: $arg1 Arg2: $arg2n";}# 改成:sub my_sub { my ($arg1, $arg2) = @_; print "Arg1: $arg1 Arg2: $arg2n";}# 下面的代码好像在用 DBI 嘛?一样要改!:$sth->bind_columns($field1, $field2);while ($sth->fetch) { print "F1: $field1 F2: $field2n";}# 改成:$sth->bind_columns(my ($field1, $field2));while ($sth->fetch) { print "F1: $field1 F2: $field2n";}

这也太麻烦了吧。懒惰不是 Perl 文化中的美德吗?

当然,懒惰是我们的美德。因为你会发现使用 use strict 之后,我们就不必花太多的时间自己去查找 use strict可以找到的很多简单错误。

那 warnings 又是什么?

哦,对了。在 Perl 5.6 及以后的版本里,我们可以在写 'use strict;' 的位置旁写 'usewarnings;':

use warnings;
在 Perl 5.6 版之前(或者为了不同 Perl 版本间的兼容 ),你可以用命令行参数 '#!/usr/bin/perl-w'。还有一种办法是设置
$^W
变量(不过,如果
$^W
不在BEGIN{}程序块里的话,就没办法截取编译时的错误提示,所以一般我们用 '-w'):
#!/usr/local/bin/perl -w# 或者$^W = 1;# 或者BEGIN { $^W = 1 }

如果你确定不用 warnings,你可以限制它的使用范围,如:

# 把这段代码:sub add_two_numbers_which_might_be_undef { $_[0] + $_[1];}# 根据Perl 的版本不同改成下面的样子:# 1sub add_two_numbers_which_might_be_undef { # 参见 'perldoc perllexwarn'  # 因为最好是只在你希望的地方禁止掉warning no warnings "uninitialized"; $_[0] + $_[1];}# 2sub add_two_numbers_which_might_be_undef { local $^W; $_[0] + $_[1];}

或者,你应像前面例子中声明 '$number'一样初始化变量。

  

爱华网本文地址 » http://www.aihuau.com/a/25101015/272023.html

更多阅读

的地得的用法 的和地的区别及用法

的地得的用法——简介日常工作中,常会有人提到“的”“地”“得”用法的问题,不少学生对“的、地、得”用法也是含糊不清,乱用一气,作业自然会在“的”“地”“得”用法上出错,并且屡改屡犯。大家都知道,“的”、“地”、“得”这三个字的

眼线膏的用法画出迷人眼线 美宝莲眼线膏

眼线膏的用法画出迷人眼线——简介美眉们一般都习惯用眼线笔来画眼线,今天小编要在这里教大家如何用眼线膏来描画眼线,步骤很简单,想要画好眼妆的美眉们,赶紧准备好工具,跟小编一起来学习吧!眼线膏的用法画出迷人眼线——工具/原料

护发素的用法 护发素发膜的正确用法

护发素的用法——简介护发素可以为头发提供一层保护,或许就因此得名了吧。比起洗发用品,护发素能够令头发看起来更自然和健康。 下面来介绍一下护发素的用法供参考。 护发素的用法——工具/原料护发素护发素的用法——方法/步骤护发

各种化妆刷的用法 如何使用彩妆

各种化妆刷的用法——简介来了解各种化妆刷的用法吧各种化妆刷的用法——方法/步骤各种化妆刷的用法 1、用平头眼影刷沾取少量眼影,从睫毛根部开始徐徐向上淡开,注意层次过渡均匀,刚开始训练以清淡为宜。(精选动物毛的扁平轻薄的刷头可

卫生棉条的用法 短导管卫生棉条的用法

卫生棉条的用法——简介卫生棉棉条,有称卫生栓,简称棉条,是一种棉质的圆柱体,在女性月经来潮时,可置入阴道中吸收经血。一个卫生棉条使用用者,一生中使用的卫生棉条可能超过10,000个。卫生棉条为众多女性提供了极大的便利,但是你知道卫生棉

声明:《Perl关于usestrict的用法 strict用法》为网友花样的男人分享!如侵犯到您的合法权益请联系我们删除