2011-09-05 28 views
13

tôi cần phải mở một tập tin trong thêm chế độ trong Perl, nhưng tôi cần điều đó trước tập tin mở tất cả các dữ liệu sẽ bị xóa và dữ liệu tươi đi trongPerl: Xóa nội dung của tập tin và tập tin mở trong chế độ append

.

Tôi sẽ nhập dữ liệu theo từng dòng, vì vậy trước khi nhập dòng đầu tiên tôi cần tất cả dữ liệu trước đó sẽ bị xóa.

Vui lòng trợ giúp.

Trả lời

16

Tôi nghĩ rằng bạn đang bối rối về những gì "thêm" có nghĩa là trong perl. Những gì bạn đang mô tả là mở một tập tin và cắt bỏ nó, tức là .:

open my $fh, '>', $file; 

này sẽ xóa các nội dung của $file và mở một tập tin mới có cùng tên.

Lý do sử dụng mở để phụ thêm là khi bạn có tệp mà bạn làm không phải muốn ghi đè. I E. sự khác biệt giữa >>> chỉ đơn giản là trước đây cắt bớt tệp hiện có và bắt đầu viết ở đầu tệp và sau đó bỏ qua đến cuối tệp hiện có và bắt đầu viết ở đó.

Documentation here

6
+1

Thực ra, việc mở tệp theo cách phù hợp trở nên dễ dàng hơn nhiều. Tại sao mở nó trong chế độ nối thêm và sau đó cắt nó thành 0 khi nó dễ dàng hơn để mở nó trong chế độ ghi ở nơi đầu tiên? – Matteo

+3

Tôi không biết, tôi đã không tạo nên giới hạn điên rồ. Ngoài ra, hôm nay tôi cảm thấy có tâm trạng trả lời câu hỏi theo mệnh giá. – daxim

+1

mở bởi '>' tệ hơn khi chúng ta nên thực hiện hoạt động nguyên tử bằng đàn. Tại sao? bởi vì chúng tôi không thể đổ tập tin đã đóng. Truncate là tốt nhất cho điều đó. Chúng tôi mở tệp dưới dạng '+ <', bầy, thử nghiệm và quyết định xóa nội dung hay không. – Znik

2

xử lý tập tin bao gồm:

  1. Đọc một tập tin (<)
  2. Viết trong một file
    1. Nối (>>)
    2. Overwrite (>)

Để biết giải thích chi tiết, vui lòng truy cập this liên kết.

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