当前位置: 首页 > news >正文

上海建设工程管理网站seo优化顾问

上海建设工程管理网站,seo优化顾问,商品seo关键词优化,seo排名赚能赚钱吗定义子程序 Perl编程语言中 Subroutine子程序定义的一般形式如下: sub subroutine_name {body of the subroutine } 调用该Perl Subroutine的典型方式如下- subroutine_name( list of arguments ); 在Perl 5.0之前的版本中,调用 Subroutine的语法略有不同&…

定义子程序

Perl编程语言中 Subroutine子程序定义的一般形式如下:

sub subroutine_name {body of the subroutine
}

调用该Perl Subroutine的典型方式如下-

subroutine_name( list of arguments );

在Perl 5.0之前的版本中,调用 Subroutine的语法略有不同,如下所示。这仍然可以在Perl的最新版本中使用,但是不建议这样做,因为它会绕过 Subroutine原型。

&subroutine_name( list of arguments );

让我们看下面的示例,该示例定义一个简单的函数然后调用它。由于Perl在执行程序之前先对其进行编译,因此在哪里声明 Subroutine都没有关系。

#!/usr/bin/perl# Function definition
sub Hello {print "Hello, World!\n";
}# Function call
Hello();

当执行上述程序时,将产生以下输出-

Hello, World!

参数传递

您可以像在任何其他编程语言中一样将各种参数传递给 Subroutine,并且可以使用特殊数组@_在函数内部访问它们。因此,函数的第一个参数位于$_ [0]中,第二个参数位于$_ [1]中,依此类推。

让我们尝试以下示例,该示例获取一个数字列表,然后打印其平均值-

#!/usr/bin/perl# Function definition
sub Average {# get total number of arguments passed.$n=scalar(@_);$sum=0;foreach $item (@_) {$sum += $item;}$average=$sum/$n;print "Average for the given numbers : $average\n";
}# Function call
Average(10, 20, 30);

当执行上述程序时,将产生以下输出-

Average for the given numbers : 20

List参数传递

由于@_变量是一个数组,因此可以用来为 Subroutine提供列表。但是,由于Perl接受并解析列表和数组的方式,可能很难从@_中提取单个元素。如果您必须将列表与其他标量参数一起传递,则将list作为最后一个参数,如下所示-

#!/usr/bin/perl# Function definition
sub PrintList {my @list=@_;print "Given list is @list\n";
}
$a=10;
@b=(1, 2, 3, 4);# Function call with list parameter
PrintList($a, @b);

当执行上述程序时,将产生以下输出-

Given list is 10 1 2 3 4

Hashes参数传递

当您向接受列表的 Subroutine或运算符提供哈希值时,哈希值将自动转换为键/值(key/value)对列表。如-

#!/usr/bin/perl# Function definition
sub PrintHash {my (%hash)=@_;foreach my $key ( keys %hash ) {my $value=$hash{$key};print "$key : $value\n";}
}
%hash=(name => Tom, age => 19);# Function call with hash parameter
PrintHash(%hash);

当执行上述程序时,将产生以下输出-

name : Tom
age : 19

返回值

您可以像使用其他任何编程语言一样从 Subroutine返回值。如果您没有从 Subroutine中返回值,那么 Subroutine中最后执行的任何计算都会自动返回值。

让我们尝试以下示例,该示例接受一个数字列表,然后返回其平均值-

#!/usr/bin/perl# Function definition
sub Average {# get total number of arguments passed.$n=scalar(@_);$sum=0;foreach $item (@_) {$sum += $item;}$average=$sum/$n;return $average;
}# Function call
$num=Average(10, 20, 30);
print "Average for the given numbers : $num\n";

当执行上述程序时,将产生以下输出-

Average for the given numbers : 20

私有变量

默认情况下,Perl中的所有变量都是全局变量,这意味着可以从程序中的任何位置访问它们。但是您可以随时使用 my 运算符创建称为词法变量的 private 私有变量。

以下示例显示了如何使用 my 运算符定义单个或多个私有变量-

sub somefunc {my $variable; # $variable is invisible outside somefunc()my ($another, @an_array, %a_hash); # declaring many variables at once
}

让我们检查以下示例,以区分全局变量和私有变量:

#!/usr/bin/perl# Global variable
$string="Hello, World!";# Function definition
sub PrintHello {# Private variable for PrintHello functionmy $string;$string="Hello, Perl!";print "Inside the function $string\n";
}
# Function call
PrintHello();
print "Outside the function $string\n";

当执行上述程序时,将产生以下输出-

Inside the function Hello, Perl!
Outside the function Hello, World!

local()临时值

local 通常在变量的当前值必须对所调用的 Subroutine可见时使用。局部变量只是为全局变量提供临时值。这就是动态作用域。

如果将多个变量或表达式赋给local,则必须将它们放在括号中。

让我们检查以下示例以区分全局变量和局部变量-

#!/usr/bin/perl# Global variable
$string="Hello, World!";sub PrintHello {# Private variable for PrintHello functionlocal $string;$string="Hello, Perl!";PrintMe();print "Inside the function PrintHello $string\n";
}
sub PrintMe {print "Inside the function PrintMe $string\n";
}# Function call
PrintHello();
print "Outside the function $string\n";

当执行上述程序时,将产生以下输出-

Inside the function PrintMe Hello, Perl!
Inside the function PrintHello Hello, Perl!
Outside the function Hello, World!

state() 变量

类似于私有变量,但是它们保持其状态,并且在多次调用 Subroutine时不会重新初始化它们。这些变量是使用 state 运算符定义的,可从Perl 5.9.4开始使用。

让我们检查以下示例以演示 state 变量的用法-

#!/usr/bin/perluse feature state;sub PrintCount {state $count=0; # initial valueprint "Value of counter is $count\n";$count++;
}for (1..5) {PrintCount();
}

当执行上述程序时,将产生以下输出-

Value of counter is 0
Value of counter is 1
Value of counter is 2
Value of counter is 3
Value of counter is 4

在Perl 5.10之前,您必须像这样编写它-

#!/usr/bin/perl{my $count=0; # initial valuesub PrintCount {print "Value of counter is $count\n";$count++;}
}for (1..5) {PrintCount();
}

上下文

Subroutine或语句的上下文定义为期望的返回值的类型。这使您可以使用一个函数,该函数根据用户期望接收的内容返回不同的值。如以下localtime()在标量上下文中调用时返回一个字符串,但是在列表上下文中调用时返回一个列表。

my $datestring=localtime( time );

在此示例中,$time的值现在是由当前日期和时间组成的字符串,如Thu Nov 30 15:21:332000。反之

($sec,$min,$hour,$mday,$mon, $year,$wday,$yday,$isdst)=localtime(time);

现在,各个变量包含由localtime() Subroutine返回的相应值。

Perl - Subroutines(子例程) - 无涯教程网无涯教程网提供定义子程序Perl编程语言中 Subroutine 子程序定义的一般形式如下: sub subroutine_nam...https://www.learnfk.com/perl/perl-subroutines.html

http://www.yayakq.cn/news/262914/

相关文章:

  • 网站推广的平台中山建设信息网
  • 电商 网站模板培训计划方案模板
  • 为什么asp.net做的网站上传后不显示照片3000块钱在朋友圈投放广告
  • vs做网站连数据库网站排名软件利搜
  • 网站接口怎么做外贸网站建站平台
  • 强企网做网站pc蛋蛋网站怎么做
  • 仪征市建设局网站中山精品网站建设精英
  • php网站下载文件怎么做中国建设网站银行
  • 网站备案跟域名备案织梦网站源码下载
  • 景安网站备案要多久如何开发自己的小程序
  • 路桥做网站的公司有哪些wordpress火吗
  • 成都网站建设龙兵网络帝国cms王猛微博
  • 网站开发公司哪里寻找客源必应站长平台
  • 建美食网站有哪些原因港港网app下载最新版
  • aspcms网站打开慢wordpress 显示发布时间
  • 怎么做百度网站会显示图片在旁边做兼职有哪些网站
  • 教育培训机构网站建设付费小说网站怎么做
  • 网站如何做图片自动切换戴尔网站建设和维护
  • 360免费建手机网站肇庆东莞网站建设
  • vs做的网站源代码无锡定制公司网站
  • wordpress建设网站的方法wordpress网站目录
  • 成都前几年网站建设公司重新建网站需要转域名吗
  • 上海自助建站北京企迪网站建设公司
  • 工程机械 网站模板网站代码怎么看
  • 宠物店网站建设计划书wordpress上传权限
  • html网站欣赏黑龙江省建设信息网官网
  • 线上网站设计培训产品网站建设找哪家
  • 企业建站公司哪里有南宁企业网站制作
  • 厂房建设招标网站成都网页设计与网站建设
  • 河南网站制作团队wordpress 鸟