zoukankan      html  css  js  c++  java
  • 子过程

    子过程:
    对于没有 NAME 的形式,你还必须提供调用子过程的方法.因此你必须保存返回值,因为
    这种形式的 sub 声明方法不但在编译的时候编译,同时也产生一个运行时的返回值,所以
    我们就可以保证保存它:
    
    
    可以用下面的方法引入在另一个模块中定义的子过程:
    use MODULE qw(NAME1 NAME2 NAME2...)
    
    [root@wx03 2]# cat Horse.pm 
    package Horse;
    use Exporter 'import';
    our $days="test111";
    @EXPORT = qw(fun1);
    sub fun1 {
    my $a=shift;
    my $b=shift;
    return $a + $b;
    };
    1;
    [root@wx03 2]# cat a1.pl 
    unshift(@INC,"/root/big/2"); 
    use  Horse qw/fun1/;
    print $Horse::days;
    print "
    ";
    
    Horse::fun1(55,23);
    print "
    ";
    print fun1(131,23);
    print "
    ";
    [root@wx03 2]# perl a1.pl 
    test111
    
    154
    
    
    
    
    间接调用子过程(通过名字或引用),可以使用下面的任何一种方法:
    
    
    [root@wx03 3]# cat t1.pl 
    sub fun1 {
     my $a =shift;
     my $b = shift;
    return  $a + $b
    };
    
    $subref=&fun1;
    
    print "第一种........
    ";
    print &$subref(23,45);
    print "
    ";
    print "第二种.........
    ";
    print $subref->(20,30);
    print "
    ";
    print "第三种.........
    ";
    print &$subref(23,323);
    print "
    ";
    [root@wx03 3]# perl t1.pl 
    第一种........
    68
    第二种.........
    50
    第三种.........
    346
    
    
    2.0  语意
    
    2.1  参数列表的技巧
    
    [root@wx03 3]# cat t2.pl 
    sub aysetenv {
    my ($key, $value) = @_;
    $hash{$key} = $value unless $ENV{$key};
    };
    
    
    &aysetenv(a,a1);
    &aysetenv(b,b1);
    &aysetenv(c,c1);
    print %hash;
    print "
    ";
    print $hash{a};
    print "
    ";
    [root@wx03 3]# perl t2.pl 
    cc1aa1bb1
    a1
    
    
    你可以一次将 @_ 填入一个散列:
    
    2.2  错误指示
    
    
    3.0 传入引用:
    
    [root@wx03 3]# cat t3.pl 
    @a=qw/a1 b2 c3 d4/;
    
    sub sum {
    my ($aref) = @_;
    my ($total) = 0;
    foreach (@$aref) { print "$_ is $_
    "; }
    };
    
    sum(@a);
    [root@wx03 3]# perl t3.pl 
    $_ is a1
    $_ is b2
    $_ is c3
    $_ is d4
    
    4.0  函数原型
    
    5.0 子过程属性:
    
    
    

  • 相关阅读:
    剔除list中相同的结构体数据
    API Gateway微服务
    Webpack vs Gulp
    客服系统
    利用 istio 来对运行在 Kubernetes 上的微服务进行管理
    微服务环境搭建
    简易的开发框架(微服务) Asp.Net Core 2.0
    Istio官方文档中文版
    Hangfire Net Core2
    IIS7性能优化
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6199986.html
Copyright © 2011-2022 走看看