Perl子例程(函数)

电脑杂谈  发布时间:2020-04-11 13:17:50  来源:网络整理

perl scalar 函数_perl scalar函数_scalar函数 opencv

Perl子例程是用户定义的函数.

Perl子例程是一段执行特殊任务的分离代码,它可以减少重复代码并使程序易于阅读.

Perl子例程可以出现在程序中的任何位置. 语法如下:

sub subroutine{
   statements;
}

调用子程序的语法格式:

subroutine( 参数列表 );

在Perl 5.0以下版本中调用子例程的方法如下:

&subroutine( 参数列表 );

perl scalar函数_scalar函数 opencv_perl scalar 函数

在新版本中,尽管也支持此调用方法,但不建议这样做.

接下来,让我们看一个简单的示例:

#!/usr/bin/perl
# 函数定义
sub Hello{
   print "Hello, World!\n";
}
# 函数调用
Hello();

执行上述过程,输出结果为:

Hello, World!

Perl子程序可以像其他程序一样接受多个参数,并且子程序参数以特殊数组@_标记.

因此,子例程的第一个参数是$ _ [0],第二个参数是$ _ [1],依此类推.

参数是标量还是数组类型,当用户将参数传递给子例程时,perl默认都会通过引用调用它们.

perl scalar函数_scalar函数 opencv_perl scalar 函数

#!/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);

执行上述过程,输出结果为:

传入的参数为 : 10 20 30
第一个参数值为 : 10
传入参数的平均值为 : 20

用户可以通过更改@_数组中的值来更改相应实际参数的值.

由于@_变量是数组,因此可以将列表传递给子例程.

但是,如果我们需要传递标量和数组参数,则需要将列表放在最后一个参数上perl scalar 函数,如下所示:

#!/usr/bin/perl
# 定义函数
sub PrintList{
   my @list = @_;
   print "列表为 : @list\n";
}
$a = 10;
@b = (1, 2, 3, 4);
# 列表参数
PrintList($a, @b);

上面的程序合并了标量和数组,输出为:

perl scalar 函数_perl scalar函数_scalar函数 opencv

列表为 : 10 1 2 3 4

我们可以将多个数组和哈希传递给子例程,但是当传入多个数组和哈希时,将导致失去独立的标识. 因此,我们需要使用引用(将在下一章中进行介绍)通过.

将哈希表传递给子例程时,它将被复制到@_,并将哈希表扩展为键/值组合的列表.

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

以上程序执行的输出为:

age : 3
name : youj

子例程可以使用return语句来返回函数值perl scalar 函数,就像其他编程语言一样.

如果不使用return语句,则子例程的最后一行将用作返回值.

perl scalar函数_perl scalar 函数_scalar函数 opencv

#!/usr/bin/perl
# 方法定义
sub add_a_b{
   # 不使用 return
   $_[0]+$_[1];  
   # 使用 return
   # return $_[0]+$_[1];  
}
print add_a_b(1, 2)

以上程序执行的输出为:

3

在子例程中,我们可以返回标量,数组和哈希,但是当返回多个数组和哈希时,它将导致独立标识的丢失. 因此,我们需要使用引用(在下一章中进行介绍)来返回多个数组和函数.

默认情况下,Perl中的所有变量都是全局变量,这意味着可以在程序中的任何位置调用这些变量.

如果需要设置私有变量,可以使用my运算符进行设置.

The

我的运算符用于创建词法范围的变量. 用my创建的变量在声明的开头一直存在,直到关闭的范围结束.

闭合范围是指一对大括号中的区域,大括号可以是文件,也可以是foreach forval字符串.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-171807-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...