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循环中不起作用。
函数:
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 ,); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?