打開模式速查
| 模式 | 操作符 | 創建 | 截斷 | 說明 |
| 讀取 | < | 否 | 否 | 文件必須存在 |
| 寫入 | > | 是 | 是 | 覆蓋或新建 |
| 追加 | >> | 是 | 否 | 末尾追加 |
模式一:異常退出(die)
use strict;
use warnings;
my $filename = 'data.txt';
open(my $fh, '<:encoding(UTF-8)', $filename)
or die "Could not open '$filename': $!";
while (my $row = <$fh>) {
chomp $row;
print "$row\n";
}
close($fh);
模式二:警告繼續(warn)
use strict;
use warnings;
my $filename = 'data.txt';
if (open(my $fh, '<:encoding(UTF-8)', $filename)) {
while (my $row = <$fh>) {
chomp $row;
print "$row\n";
}
close($fh);
} else {
warn "Could not open '$filename': $!";
}
模式三:整文件讀入數組
use strict;
use warnings;
my $filename = 'data.txt';
open(FILEIN, '<', $filename)
or die "Could not open '$filename': $!";
my @FileContents = ;
for my $line (@FileContents) {
print "$line";
}
close(FILEIN);
關鍵點提示
- 三參數
open(模式、文件名、屬性)更安全,避免注入;
:encoding(UTF-8) 指定 IO 層編碼,自動處理 BOM;
chomp 移除行尾換行符;
- 詞法文件句柄(
my $fh)作用域自動關閉,推薦使用;
- 大文件逐行處理(模式 1/2)優於整文件讀入(模式 3)。