子程序定义-2

[oracle@jhoa 16]$ cat 1.pl 
#!/usr/bin/perl
print "1.函数可放在任何地方.
";
while (1) {
&readline;
##输入等于q 就退出
last if ($line eq "q
");
sub readline {
    $line = <STDIN>;
   }
}

[oracle@jhoa 16]$ perl 1.pl 
1.函数可放在任何地方.
q


变量;

全局变量:不加说明的变量为全局变量,在子程序中改变会覆盖已有的值。

局部变量my: 用my说明的变量如my $a;

my 定义的变量只有在该子程序中存在。


局部变量my:用my 说明的变量如my $a;

my定义的变量只在该子程序中存在

my定义的变量在程序块内存在,包括在程序块内部定义的程序块也可见。在程序块外撤销。如果在主程序开头定义

时相当于全局变量。

程序块时由{}包含的语句,if,while,sub都可以定义程序块

[oracle@jhoa 16]$ cat 2.pl 
print "2.用别名传递
";
$foo = 26;
@foo = ("here's","a","list");
&testsub (*foo);



sub testsub {
 local (*printarray) = @_;
    print  "$printarray
" ;
}




[oracle@jhoa 16]$ perl 2.pl 
2.用别名传递
26






局部变量

local 定义的变量不存在与主程序中,但存在于该子程序和孩子程序调用的子程序中

sub spoof{

local ($value) = "temporary";
tellme();
}

sub tellme {
print "Current value is $value
";
}

用my时$value只存在于spoof中,tellme是另一个块,其中的$value中不同的变量。

用local 变量可在调用的子程序出现,可以打印出值。

LOCAL 在本块内改变全局变量的值如$/.出了块就恢复。内部变量不能用my声明。




调用子程序:

无论子程序定义在什么地方都可用&调用子程序

常用调用:subname(1,2);

只有在调用之前已经定义的子程序才可以省略&

sub subname{}......subname;

前向引用: 先声明,再调用,再定义。


原文地址:https://www.cnblogs.com/hzcya1995/p/13352001.html