函數參數通常用逗號分隔(,
),但在某些情況下也可能通過空格分隔,如print FILEHANDLE 'string'
。爲什麼這兩種分離器都是必需的?Perl中的函數參數分隔符?
3
A
回答
9
print
是有特殊的語法規則特殊內置Perl函數。 Documentation列出四種可能的調用:
print FILEHANDLE LIST
print FILEHANDLE
print LIST
print
因此,雖然在一般的函數參數由逗號(,
)是分離的,這是從歧義消除內容打印目標的例外打印。顯示此行爲的另一個函數是system
。
共享此語法的其他功能稱爲"Indirect Object Notation"。在形式表達:
function object arg1, arg2, … angn
# ^- no comma here
等同於:
object->function(arg1, arg2, … argn)
讓下面的語句對是相同的:
$foo = new Bar;
$foo = Bar->new;
間接對象符號具有several problems,一般應該避免,保存爲數不多的知名成語,如print F "something"
4
在該示例中,因爲print
接受參數列表並且具有默認值。所以你需要告訴打印一個標量和打印到文件句柄之間的區別。
解釋器可以告訴之間的區別:
print $fh "some scalar text";
print $bar, "set to a value ","\n";
print $fh;
print $bar;
但是,這是一個比較特殊的情況 - 大部分功能不喜歡的工作。我通常建議打印,圍繞大括號中的文件句柄arg區分。
你可以看一下原型,以此來獲得perl的做事情的參數,但我還常建議,使更少的代碼清晰
+1
有我這是一個額外的轉折點。在上面的例子中,第三行和第四行將打印$ fh和$ bar到當前選定的文件句柄。另一方面,「打印FH」會打印$ _到真正的文件句柄FH。 – BarneySchmale
相關問題
- 1. Perl分割函數 - 連續分隔符
- 2. 參數分隔符
- 3. 函數中的非分隔參數
- 4. 獲取函數參數分隔符的API函數
- 5. 在Excel函數中分隔分號分隔的字符串
- 6. 使用逗號分隔的字符串作爲函數參數
- 7. 逗號分隔的字符串值,函數參數
- 8. - 在函數參數的perl
- 9. python將參數傳遞給函數,用字符分隔
- 10. Excel的VBA函數處理分隔符
- 11. 函數分隔符的序列strtok
- 12. WordPress的分隔符函數算
- 13. Perl字符串作爲函數參考
- 14. 如何在perl中分隔數組?
- 15. @簽名爲url參數分隔符?
- 16. 自定義Rails URL參數分隔符?
- 17. PHP與Django參數分隔符
- 18. $ location改變了嗎?參數分隔符
- 19. Perl,DBI和MySQL分隔符
- 20. string.Split函數在C#標籤分隔符
- 21. 的JavaScript:發送參數的逗號分隔字符串的JavaScript函數
- 22. 的std ::函數getline:分隔字符與字符數
- 23. 通字符串變量函數的參數爲逗號分隔的列表
- 24. Perl:函數沒有足夠的參數
- 25. 傳遞給函數的Perl參數
- 26. 帶參數的perl函數調用
- 27. 在perl中區分字符串和數字參數
- 28. perl中的函數perl
- 29. Perl中使用兩個分隔符
- 30. 通逗號分隔的參數js函數
不幸的是,這是錯誤的。 'print'是具有自定義分析規則的運算符。 'print HANDLE LIST'不是一個間接的方法調用。它會忽視HANDLE的課程。你可以使用'perl -MScalar :: Util = blessed -E'sub IO :: File :: print {die}來驗證它是否有福(* STDOUT {IO});打印標準輸出「foo \ n」; STDOUT-> print(「foo \ n」);'' – ikegami
@ikegami:非常感謝您的指出! –