Perl 子程序

什么是子程序?

子程序与其他编程语言中的函数类似。我们已经使用了一些内置函数,如 printchompchop 等。我们可以在 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