perl學習 4 子程式

2021-09-08 20:34:53 字數 2320 閱讀 2894

子程式,模擬c語言中的函式,在形式上個人認為最大的區別:沒有形參

#! /usr/bin/perl

sub marine

&marine;

&marine;

所有的perl 子程式都會返回值,在perl 中返回值和不返回值是沒有區別的。當然,不是所有perl子程式返回的值都是有用的。

由於所有的被呼叫的子程式都要返回值,因此使用特殊的返回值語法在大多數情況下是一種浪費。因此larry將之簡化了。當perl 遍歷此子程式時,將會計算每一步的值。此子程式中最後計算的值將被返回。

#! /usr/bin/perl

$num1 = 10 ;

$num2 = 20 ;

sub marine

&marine;

&marine;

print 1 + &marine,"\n" ;

所有的函式都會有返回值:

print

語句,其返回值通常為1

,意思是

「print was succfessful

(列印成功)」

直接呼叫return

情況也是有的

#! /usr/bin/perl

use strict ;

my @names = qw /fred barney betty dinowilma pebbles bam-bamm/;

my $result = &which_element_is("dino", @names);

print $result ,"\n";

my $result = &which_element_is("betty", @names);

print $result ,"\n";

# sub which_element_is }

-1; #沒有找到元素(此處是可選的)}

perl

子程式將引數列表傳給子程式中的方法是,在程式名後面接括號,括號內存放引數列表,如:

$n = &max(10,15); #

此子程式有

2個引數

此引數列表被傳到子程式中,這些引數可以被子程式使用。當然,這些參存放在某個地方,在

perl

中,會自動將此引數列表(此引數列表的另乙個名字)自動存放在乙個叫做

@_的陣列中。子程式可以訪問次數組變數來確定此引數的個數以及其值,

子程式引數的第乙個值存放在

$_[0]

中,第二個存放在

$_[1]

,依次類推。

perl

不會關心是否有多餘的變數。引數不夠時也會被忽略,當傳入的引數個數不夠時,不夠的引數會得到

undef

這個值。

@_是子程式的乙個私有變數,如果有乙個全域性變數

@_,它將在此子程式呼叫前儲存起來,當子程式呼叫完成後,其早期的值會被重新賦還給@_

。這意味著當將引數傳遞給子程式時不用擔心它會影響此程式中其它子程式的

@_這個變數的

值。巢狀的子程式呼叫時,

@_的值和上述類似。甚至此子程式遞迴呼叫時,每一次呼叫將得到新的

@_,因此子程式呼叫時將得到其自身的引數列表。

注意:呼叫的子程式沒有引數時,此時@_從此呼叫者的上下文(context

)得到。這通常不是個好主意,但有時很有用。

在呼叫子程式時,引數會在子程式中被修改。

#! /usr/bin/perl

$num1 = 10 ;

$num2 = 20 ;

sub marine

&marine;

&marine;

print 1 + &marine,"\n" ;

$arg = 10 ;

&marine($arg) ;

print $arg ,"\n";

更高階的max,可以不用限制引數個數

$maximum = &max(3,5,10,4,6);

sub max

}$max_so_far;}

使用my建立私有變數:

sub max else

}上面的一條語句建立了一些私有變數並給它們賦值,第乙個為

$m,第二個為

$n。幾乎每乙個子程式都由類似的語句開頭。當看見那一行時,你就知道此子程式需要

2個變數,在此子程式中分別被叫做$m和

$n。在程式頂端

use strict

(或者在任意塊或者檔案中,如果你需要在此部分使用它),

perl

進行更嚴格的語法檢測。

許多人推薦如果程式長度大於乙個螢幕,則需要使用

use strict

perl子程式學習筆記

一.定義 子程式即執行乙個特殊任務的一段分離的 它可以使減少重複 且使程式易讀.perl中,子程式可以出現在程式的任何地方.定義方法為 sub subroutine 二.呼叫 呼叫方法如下 1.用 呼叫 subname sub subname 2.先定義後呼叫,可以省略 符號 sub subname...

perl學習之子程式

一 定義 子程式即執行乙個特殊任務的一段分離的 它可以使減少重複 且使程式易讀。perl中,子程式可以出現在程式的任何地方。定義方法為 sub subroutine 二 呼叫 呼叫方法如下 1 用 呼叫 subname sub subname 2 先定義後呼叫 可以省略 符號 sub subname...

Perl函式 子程式 學習筆記

一 函式定義 子程式即一段分離的 它可以使減少重複 且程式易讀.perl中,子程式可以出現在程式的任何地方.但一般放在程式的開始或結尾.複製 如下 sub subroutine sub開始,子程式名同變數的命名規則,可與變數同名,最好不要與內部函式同名,如果與內部函式同名則用 subroutine區...