Đó là tất cả trong perldoc -f open
:
Nếu EXPR được bỏ qua, các biến vô hướng cùng tên như filehandle chứa tên tập tin. (Lưu ý rằng từ vựng biến - những khai báo với "tôi" - sẽ không làm việc cho mục đích này, vì thế nếu bạn đang sử dụng "của tôi", xác định EXPR trong lệnh gọi để mở.)
Lưu ý rằng đây không phải là cách hay để chỉ định tên tệp. Như bạn có thể thấy, nó có một ràng buộc khó khăn về kiểu biến nó ở trong, và cả biến toàn cục mà nó yêu cầu hoặc tập tin toàn cục mà nó mở ra thường là tốt nhất nên tránh.
Sử dụng một filehandle từ vựng giữ phạm vi của nó trong kiểm soát, và xử lý đóng cửa tự động:
open my $fh, '<', "filename" or die "string involving $!";
Và nếu bạn đang dùng rằng tên tập tin từ dòng lệnh, bạn có thể có thể loại bỏ mà open
hoặc bất kỳ xử lý hoàn toàn và sử dụng toán tử đơn giản <>
để đọc từ các đối số dòng lệnh hoặc STDIN. (xem nhận xét để biết thêm về điều này)
Nguồn
2011-02-08 13:44:18
Kiểu perl này là ** cách ** lỗi thời. Bạn sẽ tốt hơn nhiều khi mở tập tin $ của tôi, "<", $ ARGV [0] ... hoặc tốt hơn nhưng không gọi mở và chỉ đọc từ ARGV.(Perl giả định các đối số là các tệp được mở cho đầu vào và mở chúng tự động cho bạn.) –
Mở một cách duy nhất được ghi lại để chỉ hoạt động trên các biến gói. – tchrist
@William: Không có mã hóa ở đó? 'mở (FH," <: mã hóa (UTF-8) ", $ pathname)' – tchrist