關於Perl中函數的聲明以及調用,舉例如下:
1、第一種使用方式:
# declare but not defined
sub fun;
# call function, the () is not necessary
fun $arg; # ok
fun($arg); # ok
# define the function
sub fun
{
//do something
}
2、第二種使用方式:
# call function, the () is not necessary
fun $arg; # error
fun($arg); # ok
# define the function
sub fun
{
//do something
}
總結:
一、如果在文件開頭使用的 sub fun {...} 定義了函數,那麼可以使用 fun arg 或者 fun(arg) 調用函數。
因爲開頭已經定義了函數,因此Perl看到fun時即可知道這是一個函數調用,因此可以不用括號亦可。
二、如果函數定義 sub fun {...} 放在文件結尾,那末在文件開頭部分只能使用 fun(arg)調用,不能省略括號。
因爲此時函數尚未定義,因此Perl看到fun時並不知道這是一個函數,所以必須使用括號告訴Perl這是一個函數。
三、如果函數 sub fun {...} 放在文件結尾,但在開頭用 sub fun; 聲明瞭函數,那麼也可以省略括號。
因爲這時候雖然函數尚未定義,但通過前向聲明,Perl已經知道fun是一個函數,因此括號可以省略。