[perl笔记] - 流程和函数

if(){

}elsif(){

}else{

}

while(){

}

until(){

}

for(; ;){

}

foreach $word (@words) {
    if ($word eq "the") {
      print ("found the word 'the'\n"); 
    }
  }

do {
    statement_block
  } while_or_until (condexpr);

last:  与C中的break作用相同;

next:  与C中的continue作用相同;

redo:  重复此次循环,即循环变量不变,回到循环起始点,但要注意,redo命令在do循环中不起作用。

goto label;

函数:

C语言中:

1  先声明,再调用,再定义

  void fun(void);

  void other(void){fun();}

  void fun(void){};

2 或者先定义,再调用

  void fun(void){};

  void other(void){fun();}

perl语言

函数,返回值缺省,return即可,和python,ruby相同

1  先定义,再调用,可以省略&符号

   sub subname{
    }
    ...
    subname;

2  先使用&符号调用,再定义,

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

3  先声明,再调用,再定义
  sub subname;
  ...
  subname;
  ...
  sub subname{
    ...
  }

4 用do调用 
  do my_sub(1, 2, 3);等价于&my_sub(1, 2, 3);

变量

本地变量:my

my($scalar) = 43;

本地变量和调用子程序都可以使用的变量:local

local(@array) = (1, 2, 3);

参数传递

#传递数组
  &addlist (@mylist);
  &addlist ("14", "6", "11");
  &addlist ($value1, @sublist, $value2);
  ...
  sub addlist {
    my (@list) = @_;
    ...
  }
#参数为数组时,子程序只将它赋给一个数组变量。如
  sub twolists {
    my (@list1, @list2) = @_;
  }
#中@list2必然为空。但简单变量和数组变量可以同时传递:
  &twoargs(47, @mylist); # 47赋给$scalar,@mylist赋给@list
  &twoargs(@mylist); # @mylist的第一个元素赋给$scalar,其余的元素赋给@list
  ...
  sub twoargs {
    my ($scalar, @list) = @_;
    ...
  }

#注意简单变量和数组同事传递时的顺序
sub argument{

    my ($filetimes, @filename,)=@_; #注意,如果$和@调换位置,则filename则为空值

}

$filename=file4;
@filenames=('file1','file2','file3');
argument( $filename,@filenames,);
原文地址:https://www.cnblogs.com/zengyou/p/3055665.html