首页 > 编程语言 >PERL语言的子程序

PERL语言的子程序

时间:2023-04-03 17:38:13浏览次数:43  
标签:le 语言 la PERL print marine 子程序 sub


子程序的定义可以使用关键字 sub 子程序名(不包含&),以及经过缩进的花括号

$n=1;

&marine;
&marine;
&marine;
 sub marine{

     

     print "Hello $n\n";

     $n+=1;

     }

子程序可以在程序的任意位置,如果提前使用在后定义的话,也不用事先声明,只是子函数只能是定义,经过调用后才会执行,不会自动执行

注:

子程序的定义是全局的,不存在私有子程序的说法,如果定义了重名的子程序,那么后面的额子程序会覆盖掉前面的子程序,一般现在见过的所有变量都是全局变量

子程序的返回值:

PERL子程序都是具有返回值的,其返回值就是最后一次运算的结果

$tmp=&marine;
 print $tmp;
 sub marine{
     $n+=1;
     print "Hello $n\n";#print语句返回的是1,表示输出成功
     }$tmp输出的结果是1
$tmp=&marine;
print $tmp;
sub marine{
    print "Hello $n\n";
    $n+=1;
    }#这样的结果则是2

另外最后执行的表达式与代码中的最后一行并不相同

$m=4;
 $n=6;
 $result=&la_or_le;
 print $result;
 sub la_or_le{
 if($m>$n)
 {
     $m;
 }
 else
 {
     $n;
 }
     
 }

PERL子程序,可以有参数,传递参数列传递到子程序中去,只要在子程序调用的后面加上括号即可

PERL自动将参数列表化为名称是@_的特殊的数组变量,该变量在子程序执行期间有效

$result=&la_or_le(1,2);
 print $result;
 sub la_or_le{
 if(@_[0]<@_[1])    
 {
     @_[1];
 }
 else
 {
     @_[0];
 }
 }

我们可以看到这里面只用到了参数的前两个如果是&la_or_le(1,2,3);的话呢?也没关系,第三个参数就自动忽略了

同样,如果用到的参数超出了@_的边界的话,就会是undef

对于如果已有了全局变量@_。则该变量在子程序调用之前会先被保存起来,并且在子程序返回时恢复原本的值即使程序自己递归调用自己也是这样,不会影响到本次执行过程

中的@_变量

标签:le,语言,la,PERL,print,marine,子程序,sub
From: https://blog.51cto.com/u_15995156/6166908

相关文章

  • win32汇编语言学习之二
        对于汇编语言来说win32环境中只有一种类型,那就是32位整数,例如MessageBoxA的四个参数HWND,LPCTSTR,LPCTSTR,UINT之所以定义成不同的摸样主要是为了说明其用途,我们在汇编环境下调用MessageBoxA时,DOS状态下会是这样的:  pushuType  pushlpCaption  pushlpText ......
  • C语言逆向——switch语句中的大表和小表,本质上是内在存储空间降低
    连续值中抹去多项CPP代码:#include"stdafx.h"voidFun(intx){ switch(x){ case100: printf("100"); break; case101: printf("101"); break; case102: printf("102"); break; case106: printf("......
  • 零基础Go语言从入门到精通(数据库编程:02-Gorm 操作 MySQL 数据库)
    gin-gorm-api-example/main.goatmaster·cgrant/gin-gorm-api-example·GitHubhttps://github.com/cgrant/gin-gorm-api-example/blob/master/main.goGorm介绍ThefantasticORMlibraryforGolangGo语言的超棒的ORM类库功能强大:全功能ORM(几乎)关联(包含一个,包含多个,属......
  • C语言itoa函数
    一、atoi()函数atoi()是C语言中的字符串转换成整型数的一个函数(1)【头文件】#include<stdlib.h>(2)【函数原型】intatoi(constchar*str);(3)【函数说明】atoi()函数会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等),直到遇上数字或正负符号才开始做转换,而再遇到非......
  • Rust编程语言入门
    Rust编程语言入门Rust简介为什么要用Rust?Rust是一种令人兴奋的新编程语言,它可以让每个人编写可靠且高效的软件。它可以用来替换C/C++,Rust和他们具有同样的性能,但是很多常见的bug在编译时就可以被消灭。Rust是一种通用的编程语言,但是它更善于以下场景:需要运行时的速度需......
  • C语言-变量的存储类型
    0存储类型是指变量占用内存空间的方式,也称为存储方式。从内存分配的时间上,可分为“静态存储”和“动态存储”类。  0.1静态存储:在程序前,系统(编译器)自动分配内,程序结束后,系统(编译器)自动释放。  0.2动态存储:在程序执行时;根据需要手动分配内存,使用完成后再手动释放。1C......
  • Rust语言 学习01 简介 && 基础
    ......
  • C语言,str系列函数
     1、strcat()此函数原型为char*strcat(char*dest,constchar*src).功能为连接两个字符串,把src连接到dest后面;返回dest地址//函数实现char*strcat(char*dest,constchar*src){char*addr=dest;while(*dest)//找到'\0'{dest++;};......
  • 逍遥自在学C语言 | 变量、常量与数据类型
    前言一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、基本数据类型1、整型C语言中的整型数据如下表所示:数据类型含义长度(字节)取值范围(有符号)取值范围(无符号)shor......
  • C语言逆向——数组和结构体,数组多维只是一个编译构造的假象,本质会转成一维数组,结构体
    数组数组是C语言中非常重要的一个概念,学习C语言主要就是两个知识点:数组、指针,学好这两个,那么你的C语言一定也会很好。什么是数组?或者说什么情况下我们需要使用数组,比如说我们需要定义一个人的年龄,我们可以定义一个变量来表示,但是如果我们需要定义三个人的年龄呢?那就需要三个变......