加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl -- 子过程 -->列表处理

发布时间:2020-12-16 00:27:28 所属栏目:大数据 来源:网络整理
导读:? 1、定义子过程最普通的例子: sub razzle{ print "OK,you have been razzled.n";}razzle(); #:省略了输入参数和输出(返回值)。 #:perl向子过程传入数据和子过程传出数据的方法:所有传入的参数被当成单个平面标量列表,类似的多个返回值也被当做单个
?

1、定义子过程最普通的例子:

sub razzle{
        print "OK,you have been razzled.n";
}

razzle();


#:省略了输入参数和输出(返回值)。

#:perl向子过程传入数据和子过程传出数据的方法:所有传入的参数被当成单个平面标量列表,类似的多个返回值也被当做单个平面标量列表返回给调用者;当使用LIST也一样,任何传入的数组或散列的值都代换到一个平面的列表里面,同时也失去了他们的标识;

#:所有出入perl过程的参数都是以@_身份传入的。如果调用两个参数的函数,他们在函数内部可以作为@_数组的前两个成员访问:$_[0]和$_[1];

#:@_是一个本地数组,它的值是实际标量参数的别名(引用传参),因而如果修改了@_中的成员,那么同时也修改了对应的实际参数的值。

#:子过程的返回值是过程最后一个表达式的值。或者你可以在子过程的任何一个地方明确使用一个return语句来返回值并且推出子过程。

2、参数列表技巧

#:将 @_? 的值拷贝到一个 my? 列表,这样就? 可以方便使用这些正式参数( 不一样的是,这样拷贝就将引用传参的语义变为了传值传参) ,下面是一个典型的例子:

sub ayetenv {
        my ($key,$value) = @_;
        $ENV{$key} = $value unless $ENV{$key};
}


#:不要传值参数的情况,求最大值:

?

sub max {
        $max = shift(@_);
        for my $item (@_) {
                $max = $item if $max < $item;
        }
        return $max;
}

$bestday = max($mon,$tue,$wed,$thu,$fri);


#:将@_填入一个散列

sub cofi{
        my %options = @_;
        print "Maximun verbosity.n" if $options{verbose} == 9;
}

cofi(password => 'love',verbose => 9,socre =>0);


#:通过形参修改原始值

upcase ($v1,$v2);
sub upcase{
        for (@_){ tr/a-z/A-Z/;}
}

($v3,$v4) = upcase($v1,$v2);


#:返回一个copy,不修改原始值

($v3,$v2);
sub  upcase {
        my @parms = @_;
        for  (@parms) { tr/a-z/A-Z/ }
        return   wantarray ? @parms : $parms[0];
}


#:请其他的调用上面的函数

#!/usr/bin/perl
use strict;
use warnings;
my @list1 = qw/Yan Zeng Li/;
my @list2 = qw/Wang Lu/;
sub  upcase {
        my @parms = @_;
        for  (@parms) { tr/a-z/A-Z/; print"$_t"; last; }
        print "n";
        return   wantarray ? @parms : $parms[0];
}
my @newlist = upcase(@list1,@list2);
foreach (@newlist){
        print "$_t";
}
print "n";

输出结果如下:

YAN
YAN     Zeng    Li      Wang    Lu

#:从例子可以看出,@_中存在的不是列表本事,而是把列表里面的元素一个一个的复制到数组中。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读