Perl 新手笔记系列开始认真的学习PERL, 决心把PERL 变成我的技能列表的一项,顺手记录以下学习历程。
笔记:(纯属原创哦)
6。Perl 的变量的使用
定义变量,引用变量,变量赋值,use strict, use warnings……
如 前面所说,Perl 里的变量分为标量,数组,哈希。而三种变量在写法上是有所区别的:
标量: 定义为标量的变量,以 “$” 开头
数组: 定义为数组的变量,以 “@” 开头
哈希: 定义为标量的变量,以 “%” 开头
所以,我们只要看到变量的前缀,就可以知道他是哪种类型。
变量的定义/引用/赋值
变量的定义很简单
my 变量名; #包括$,@,%前缀
引用时也是直接用
变量名; #包括$,@,%前缀
赋值采用的基本多数语言通用的 等于号“=”:
变量名=变量值
或者
变量名=指令返回值
或者
变量名= 变量值运算式
如:
my $var ; my $var2;my $var3; # 定义变量
$var=1 ; # 这就是直接赋值
$var2=$var+1; # 变量值运算式
$var3=length('123'); # 函数返回值
print $var3 # 引用变量
命名规则
当然,perl的变量名也有一定的要求,必须以“_” 或者字母开头,后面可以跟 字母,数字或者“_” :
如
my $12 = 1234;
print $12;
my $aa=1234;
是可以的,而
因为perl中的变量
my $12a = 1234;
print $12a;
则会失败。
strict模式
事实上,perl中的变量也可以事先不声明(my $var部分),而直接引用。如:
$var4=123;
print $var4;
print $var5;
但是这样显得不是很严格,不符合一些写惯C/JAVA等对语法要求很严格的语言的习惯,不过perl可以用一个叫strict的包来保证语法的严谨。
具体是这个样子的,在perl语句的最前面加入 use strict; 就可以保证语法的严谨了。
perl
use strict;
$myvar=123;
print $myvar;
Global symbol "$myvar" requires explicit package name at a.perl line 4.
Global symbol "$myvar" requires explicit package name at a.perl line 5.
就会报错 。
通过 use strict; 就可以避免引用未定义的变量
warnings 模式和-w 开关
另外,PERL 还提供了warings包或者 -w 开关 来对程序进行运行时检查,其中包括变量是否初始化(赋值)。
比如说:
perl
use warings;
my $var;
print $var;
就会报错
perl -w
my $var;
print $var;
效果和前面的一致。
warnings 和 strict 的区别
strict 是语法检查,如果失败的话,会根本不执行整个语句,而warning 则是把错误报出来,但是不影响程序执行。
试验一下:
perl
use strict;
print "line 1n";
print $aaa;
print "line 2n";
Global symbol "$aaa" requires explicit package name at - line 3.
Execution of - aborted due to compilation errors.
连第一行都不执行,而warings则不会终止program:
perl
use warnings;
$aaa=123;
my $bbb;
print "line 1n";
print $bbb;
print "line 2n";
Name "main::aaa" used only once: possible typo at - line 2.
line 1
Use of uninitialized value in print at - line 5.
line 2
程序继续执行,只是会有告警……