Hầu như phổ biến khi người ta gửi câu hỏi về SO (hoặc nơi khác) về Perl và đọc từ file, nếu bất kỳ mã có liên quan đến một kiểu cũ mởTôi có nên sử dụng một xử lý thư mục từ vựng với opendir trong Perl không?
open FH, ">file.txt" or die "Can't open for write, $!"; # OLD way, do not use!
bị mắng vì đã không sử dụng một filehandle từ vựng. Như chúng ta đều biết,
open my $fh, ">", "file.txt" or die "Can't open for write, $!"; # new hotness
là cách thích hợp để mở xử lý tệp trong Perl hiện đại. Điều gì về xử lý thư mục? Trong một vài câu hỏi SO gần đây, người ta đã đặt ra câu hỏi có liên quan đến opendir
, và gửi mã như
opendir DIR, "/directory" or die "Can't get the directory, wtf?! $!"; # ???
Các perldoc pages hiển thị
opendir(my $dh, $some_dir) || die "can't opendir $some_dir: $!";
làm ví dụ.
Chúng tôi có nên đề xuất cho mọi người sử dụng một trình xử lý thư mục từ vựng cho opendir không?
Sẽ rất tuyệt nếu 'while (readdir $ dir) {...}' hoạt động như 'while (readline $ file) {...}' –
Trong trường hợp này, ví dụ perldoc * làm * làm điều đó "đúng", hãy nhớ rằng các ví dụ cần phải tập trung. Định kỳ, mọi người đề nghị đi qua và thêm các tuyên bố từ vựng hoặc nghiêm ngặt/cảnh báo vào các ví dụ; điều này phần lớn bị bắn hạ bởi vì nó thực sự che khuất điểm của mã ví dụ. Vì vậy, nếu ví dụ đã được opendir (DIRH, ...), đó sẽ không có được một cuộc tranh luận chống lại dirhandles từ vựng. – ysth