2011-09-20 27 views

Trả lời

8

Ý nghĩa của một chủ thể khác nhau. Hầu hết thời gian, một bareword là một cuộc gọi chức năng.

sub foo { say "Hello"; } 
foo; 

Đôi khi, đó là chuỗi chữ.

$x{foo} # $x{"foo"} 

Trong các trường hợp còn lại, nó tạo ra typeglob.

print STDOUT "foo"; # print { *STDOUT } "foo"; 

Trong trường hợp này,

open3(HIS_IN, HIS_OUT, HIS_ERR, ...) 

tương đương với

open3("HIS_IN", "HIS_OUT", "HIS_ERR", ...) 

nhưng open3 sử dụng chuỗi như tên của một glob trong gói của người gọi, vì vậy ở trên là chức năng tương đương đến

open3(*HIS_IN, *IS_OUT, *HIS_ERR, ...) 
+0

Nó cũng là trường hợp để mở, đóng vv? –

+1

@new_perl, Do quy tắc phân tích cú pháp đặc biệt, 'open' và' close' khiến đối số được hiểu là một glob (trực tiếp), không phải là chuỗi được sử dụng để tìm nạp một glob. Đó là lý do tại sao 'open (FOO, ...)' hoạt động dưới 'use strict;' và 'open3 (FOO, ...)' không. – ikegami

+0

Nhưng 'mở (* FOO)' cũng hợp lệ, phải không? –

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