PERL子程序的调用与return操作符
先不说别的,先上代码 use strict; sub which_element_is(){ my ($what,@array)=@_; foreach(0..$#array) { if($what eq ?$array[$_]) { return $_; } } -1; } my @names=qw(fred betty dino wilma pebbles); my $results=&which_element_is("dino",@names); print "the index is ".$results; PS: ? ? ?要注意的是在调用子函数之前要进行函数定义,或许在调用之前不用定义也行,但是还不知道要怎么做,就此掠过,还有在调试程序的时候还是那个问题,在if语句块中添加 大括号,进行标明!!!,总是在这里通不过...还有之前我们说过在PERL的子程序中是不用return语句的,最后执行的语句就是返回值,当然如果不是要在代码快中的最后一句进 行返回的话就要使用return语句了 省略"与号" 在程序中如果在子程序调用之前,就已经有了定义,此时便可以省略与号,或者在语法上能够识别出是子程序调用的时候,也可以省略与号(也就是说在函数名称的后面加上小 括号即可)另外一种情况是在子程序与内置函数同名时必须使用与号!!,否则就会调用内置函数,而不是程序员自己定义的函数了 非标量的返回值 其实我们知道函数的返回值不一定只有单个变量,也就是说可以有非标量的返回值如下: use strict; my $fred=2; my $barney=9; sub list_from_fred_to_barney { ?? ?if($fred<$barney) ? ??{ ?? ? ? ? $fred..$barney; ? ??} ?? ?else ?? ?{ ?? ? ? ?$barney..$fred;? ? ?} ? ?? ?} print ?list_from_fred_to_barney; 关于my 和 state 回顾下我们使用my 来创建子程序中的私有变量,但是每次子程序调用一次,该变量就会重新定义一次,state操作符声明的变量则可以再子程序的多次调用时保留上次的结果, use 5.010; 但是state还有些许限制,我们不能在列表上下文中初始化这两种类型的state变量 即: state @array=qw(a b c);#是错误的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |