perl入门笔记(四)

上下文问题:

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" ;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值