perl入门笔记(四)

前端之家收集整理的这篇文章主要介绍了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" ; }

猜你在找的Perl相关文章