2011-09-21 43 views
8

>:scalar是什麼意思?

決不看到這種代碼之前..

回答

9

的特定「>:東西」語法告訴Perl的IO系統使用由THING指定的層。看看PerlIO documentation'層'。常見的圖層是'原始'和'utf8'。

在這種情況下,這允許您使用$ stdout作爲內存中的文件,該文件最終應包含發送到STDOUT的所有內容。更一般地說,語法允許您打開內存文件,然後將文件句柄發送到通常寫入文件的其他函數,以便您可以收集其輸出(或提供其輸入)。

您也可以通過打開「文件」,這是一個標量的參考實現同樣的結果:

open my $fh, ">:scalar", \$scalar or die; 
open my $fh, ">", \$scalar or die; 

它是由PerlIO的提供,並通過PerlIO::scalar實現的,雖然你不必「使用'訪問該功能的模塊。

+0

'>:scalar'是什麼意思? – asker

+0

我已經在開始時添加了。 – Alex

3

Perl使用layered IO system。在鏈條的底部,會發現一個處理訪問媒體的層。 scalar是IO系統層,用於處理從標量讀取而不是文件的讀取和寫入。話說

open(my $fh, '>:scalar', \$scalar) 

標量句柄是說

open(my $fh, '>:unix', $file_name) 

爲OS手柄的等價物。這完全是多餘的,因爲Perl已經知道它是一個標量句柄而不是操作系統句柄。