Perl 子程序
什么是子程序?
子程序与其他编程语言中的函数类似。我们已经使用了一些内置函数,如 print
、chomp
、chop
等。我们可以在 Perl 中编写自己的子程序。这些子程序可以写在程序的任何地方,但最好将子程序放在代码的开头或结尾。
子程序示例
sub subroutine_name
{
Statements…; # this is how typical subroutines look like.
}
我们知道如何编写子程序,我们如何访问它?
我们需要使用前缀为 &
的子程序名来访问或调用子程序。
sub display
{
print "this is a subroutine";
}
display(); # This is how we call a subroutine
传递 Perl 参数和输入参数
编写子程序或 Perl 函数主要是编写那些可重复使用代码。大多数可重用代码都需要将参数传递给子程序。在这里,我们将学习如何将参数传递给子程序。
sub display
{
my $var=@_; # @_ is a special variable which stores the list of arguments passed.
print "$var is the value passed";
}
display(2,3,4); #this is how we need to pass the arguments.
输出:
3 is the value passed
@_
是一个特殊的数组变量,它存储传递给子程序的参数。
Perl Shift
我们也可以使用’shift’关键字,它一次将一个参数移动到变量或 $_[0],$_[1]…
,这是 @_
数组的单独元素。
sub display
{
my $var=shift;
print "$var is passed";
}
display("hello");
输出:
hello is passed
子程序通常用于面向对象的编程,也可用于可能有更多可重用代码的地方。
子程序的主要功能是执行一些任务并返回可重用代码的结果。
我们可以使用 return
关键字从子程序返回一个值。
sub add
{
my $a=shift;
my $b=shift;
return($a+$b);
}
my $result=add(5,6);
print $result;
输出:
11
$result
将保有 $a
和 $b
的值。
我们还可以将哈希数组和数组直接传递给子程序。
sub hash
{
my %hash=@_;
print %hash;
}
%value= ( 1=>'a', 2=>'b');
&hash(%value);
输出:
1a2b
我们还可以返回哈希数组或数组。
sub hashArray
{
my %hash=@_;
print "Inside Sub-routine";
print %hash;
return(%hash);
}
%hash=(1=>'a', 2=>'b');
my(@ret)=hashArray(%hash);
print "After Sub-routine call";
print @ret;
输出:
Inside Sub-routine2b1aAfter Sub-routine call2b1a