【Perl编程-4】子程序+引用

Perl 子程序也就是用户定义的函数。
Perl 子程序即执行一个特殊任务的一段分离的代码,它可以使减少重复代码且使程序易读。Perl 子程序可以出现在程序的任何地方,语法格式如下:

sub subroutine{
   statements;
}

调用子程序语法格式:subroutine( 参数列表 )
在 Perl 5.0 以下版本调用子程序方法如下:&subroutine( 参数列表 )

向子程序传递参数

Perl 子程序可以和其他编程一样接受多个参数,子程序参数使用特殊数组@_ 标明。因此子程序第一个参数为 $_[0], 第二个参数为 $_[1], 以此类推。不论参数是标量型还是数组型的,用户把参数传给子程序时,perl默认按引用的方式调用它们。

实例

#!/usr/bin/perl
 
# 定义求平均值函数
sub Average{
   # 获取所有传入的参数
   $n = scalar(@_);
   $sum = 0;
 
   foreach $item (@_){
      $sum += $item;
   }
   $average = $sum / $n;
   print '传入的参数为 : ',"@_\n";           # 打印整个数组
   print "第一个参数值为 : $_[0]\n";         # 打印第一个参数
   print "传入参数的平均值为 : $average\n";  # 打印平均值
}
 
# 调用函数
Average(10, 20, 30);

向子程序传递哈希

在传入多个数组和哈希时,会导致丢失独立的标识,所以需要使用引用。

当向子程序传递哈希表时,它将复制到 @_ 中,哈希表将被展开为键/值组合的列表。
实例:

#!/usr/bin/perl
 
# 方法定义
sub PrintHash{
   my (%hash) = @_;
 
   foreach my $key ( keys %hash ){
      my $value = $hash{$key};
      print "$key : $value\n";
   }
}
%hash = ('name' => 'runoob', 'age' => 3);
 
# 传递哈希
PrintHash(%hash);
#结果
age : 3
name : runoob

引用

引用就是指针,Perl 引用是一个标量类型可以指向变量、数组、哈希表(也叫关联数组)甚至子程序,可以应用在程序的任何地方。

定义变量的时候,在变量名前面加个\,就得到了这个变量的一个引用,比如:

$scalarref = $foo; # 标量变量引用
$arrayref = @ARGV; # 列表的引用
$hashref = %ENV; # 哈希的引用
$coderef = &handler; # 子过程引用
$globref = *foo; # GLOB句柄引用

取消引用可以根据不同的类型使用 $, @ 或 % 来取消,

    原文作者:oddxix
    原文地址: https://www.jianshu.com/p/2330d04b285a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞