|
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,);
|
|
|