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

perl -- 子过程 -->列表处理,第1张

概述  1、定义子过程最普通的例子: sub razzle{ print "OK,you have been razzled.\n";}razzle(); #:省略了输入参数和输出(返回值)。 #:perl向子过程传入数据和子过程传出数据的方法:所有传入的参数被当成单个平面标量列表,类似的多个返回值也被当做单个平面标量列表返回给调用者;当使用LIST也一样,任何传入的  

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/perluse 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";

输出结果如下:

YANYAN     Zeng    li      Wang    Lu

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

总结

以上是内存溢出为你收集整理的perl -- 子过程 -->列表处理全部内容,希望文章能够帮你解决perl -- 子过程 -->列表处理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1284907.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存