=pod
定义子程序:
sub sub_name
{
#($var1, $var2) = @_;
#$var1 = $_[0];
#$var2 = $_[1];
#定义局部变量: my $myVar = $_[1];
my ($m, $n) = @_;
}
调用子程序:
&sub_name;
$maximum = &max(3, 5, 10, 4, 6);
sub max
{
my($max_so_far) = shift @_; #数组中的第一个值,暂时把它当成最大值
foreach(@_) #遍历@_比较得出最大值
{
if($_ > $max_so_far)
{
$max_so_far = $_;
}
}
$max_so_far; #此时就相当于,return $max_so_far;
}
关于词法(my)变量:
可以在if、while、foreach的语句块里使用。
foreach(1..10)
{
my($square) = $_ * $_; #该循环中的私有变量
print "$_ squared is $square.\n";
}
my($num) = @_; #列表上下文,和($num) = @_;相同,得到@_的第一个元素
my $num = @_; #标量上下文,和$num = @_;相同,得到@_里面元素的个数
my @phone_number;
在日常perl编程当中,最好对每个新变量都是用my声明,让它保持在自己所在的词法作用于内。在第三章中,你已经看到过如何在foreach循环中定义自己的控制变量而这个控制变量也可以声明为词法变量:
foreach my $rock (qw/bedrock slate lava/)
{
print "One rock is $rock.\n";#依次输出每块石头的名字
}
return操作符:
和c/c++的语言没多大区别,可以终止循环,提前退出,也可以在最后返回某值
可以返回非标量数值,通俗点讲就是返回数组和哈希表类的变量
state限定符:
state限定符和c语言中的static限定符一样,限定某个变量后,只会初始化一次,然后会保存上次的值
如:
注意:要加上use 5.010;
sub marine
{
state $n = 0; #持久性私有变量$n
$n += 1;
print "Hello, sailor number $n!\n";
}
=cut
#!/usr/bin/perl -w
use utf8;
use diagnostics;
use strict;
system "pause";
转载于:https://www.cnblogs.com/v-BigdoG-v/p/7398625.html