加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl入门笔记(四)

发布时间:2020-12-15 23:52:38 所属栏目:大数据 来源:网络整理
导读:上下文问题: perl中执行表达式,要不返回一个标量,要不返回一个列表 #!/usr/bin/perl -w use strict; my @array=qw(fred wang ling); my @copy_array=@array; my $num=@array; print $num,"n"; foreach(@copy_array) { print $_,"n"; } result: 3 fred w

上下文问题:

perl中执行表达式,要不返回一个标量,要不返回一个列表

#!/usr/bin/perl -w
use strict;
my @array=qw(fred wang ling);
my @copy_array=@array;
my $num=@array;
print $num,"n";
foreach(@copy_array)
{
print $_,"n";
}
result:
3
fred
wang
ling

子程序:

在perl中子程序可以定义在任意的位置,没有任何的限制。甚至可以进行重复定义,这样后面的会覆盖前面的,但是如果使用了警告的话程序会发出提示警告。

返回值:

所有的perl程序都有返回值,所以perl的创始人Larry将return简化,默认去掉

#!/usr/bin/perl -w
#use strict;
use 5.010;
sub sum_var{
print "The sum of array:","n";
$fred+$ning;
}
$fred=3;
$ning=4;
$sum_a=&sum_var;
print $sum_a,"n";
此时默认加和的结果是返回值

作用域:

在不使用use strict前提下,任何直接使用的变量都是全局的,但使用了use stric之后变量在使用前必须声明定义。

私有变量:

私有变量的创建是my

临时变量:

临时变量的创建用local

#!/usr/bin/perl -w
use strict;
my $max_value=&max_value(3,2,5,7,1);
print $max_value,"n";
sub max_value
{
? my $temp_max=shift @_;? #选出第一个
? foreach(@_) #遍历剩下的
? {
??? if($temp_max<$_)
??? {
????? $temp_max=$_;
??? }
? }
? $temp_max;? #得出最大的值
}
判断某个元素是否存在于一个数组中:

#!/usr/bin/perl -w
use strict;
my @names=qw/fred wang ling xin/;
my $result=&which_element_is('wang',@names);
print $result,"n";
sub which_element_is
{
?my($what,@array) =@_;
?foreach(0..$#array)
?{
?? if($what eq $array[$_])
?? {
???? return $_;
?? }
?}
?-1;
}

省略与号:

如果调用的子程序只能是以函数处理,或者在调用之前已经看到过子函数的定义则说明可以省略与号。

注意:如果自己定义的子程序和内置函数同名,则必须要加&符号,这样就告诉编译器是调用自己定义的子程序,而不是内置的函数。

持久性私有变量:state

类似于C语言中的静态变量

钻石操作符:<>

#!/usr/bin/perl -w
use strict;
use 5.010;
while(<>)? #<>可以直接作用输入行
{
?chomp; #chomp会默认运行在$_上
?print "I saw $_ elements.","n" ;
}
调用参数:

钻石操作符其实并不是读取的命令行参数,而是@ARGV数组,这个数组中的元素会自动填满所有的命令行参数,它和普通数组的操作一样。

#!/usr/bin/perl -w use strict; use 5.010; @ARGV=qw/fred wang ling bingo/; while(<>) { ?chomp; ?print "I saw $_ elements.","n" ; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读