2011-09-21 24 views
8

>:scalar có nghĩa là gì?

Chưa bao giờ thấy loại mã này trước ..

Trả lời

9

Các đặc biệt ">: Thing" cú pháp cho hệ thống Perl IO sử dụng lớp theo quy định của điều. Hãy xem PerlIO documentation cho 'lớp'. Các lớp phổ biến là 'raw' và 'utf8'.

Trong trường hợp này, điều này cho phép bạn sử dụng $ stdout như một tệp trong bộ nhớ mà cuối cùng sẽ chứa bất kỳ thứ gì được gửi tới STDOUT. Nói chung, cú pháp cho phép bạn mở tệp trong bộ nhớ, sau đó gửi tệp thủ công tới các chức năng khác thường ghi vào tệp để bạn có thể thu thập đầu ra của chúng (hoặc cung cấp đầu vào của chúng).

Bạn cũng có thể đạt được kết quả tương tự bằng cách mở một "tập tin" mà là một tham chiếu đến một vô hướng:

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

Nó được cung cấp bởi PerlIO, và thực hiện bởi PerlIO::scalar, mặc dù bạn không cần phải 'sử dụng 'mô-đun để truy cập chức năng.

+0

'>: scalar' có nghĩa là gì? – asker

+0

Tôi đã thêm vào lúc bắt đầu. – Alex

3

Perl sử dụng layered IO system. Ở dưới cùng của chuỗi, người ta tìm thấy một lớp liên quan đến việc truy cập các phương tiện truyền thông. scalar là lớp hệ thống IO xử lý việc đọc và ghi đến một vô hướng thay vì tệp. Nói

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

cho xử lý vô hướng là tương đương với nói

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

cho xử lý hệ điều hành. Đó là hoàn toàn dư thừa, vì Perl đã biết nó là một tay cầm vô hướng và không phải là một hệ điều hành xử lý.

Các vấn đề liên quan