Perl编程-4子程序+引用

Posted oddxix

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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句柄引用

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

以上是关于Perl编程-4子程序+引用的主要内容,如果未能解决你的问题,请参考以下文章

Perl黑客编程

perl 中的引用

Perl教程_编程入门自学教程_菜鸟教程-免费教程分享

如何有条件地将 C 代码片段编译到我的 Perl 模块?

解决未能加载文件或程序集“Newtonsoft.Json ...."或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)(代码片段

可以用 Perl 编程语言做哪些神奇好玩的事情