ファイル内容の読み書き
ファイルOpen
open(R, $filename) or die "File not opened.";
open ファイルを開く。第一引数がファイルポインタ。第二引数が読み込むファイル。
第二引数の頭に特定の記号をつけるとモードを指定して開くことが出来る。
第二引数の頭に特定の記号をつけるとモードを指定して開くことが出来る。
| 構文 | 意味 |
| open(F, "<filename"); | 読込み用 |
| open(F, ">filename"); | 書込み用(上書き) |
| open(F, ">>filename"); | 書込み用(追加) |
| open(F, "+>filename"); | 読み書き用 |
| open(F, "+<filename"); | 読み書き用 |
die メッセージを出力して終了。
orでつなぐことで、openが真の場合はdieを実行しない。openが偽の場合にdieを実行する。という動作になる。
(式が真になることが確定した段階で残りを評価しないらしい)
orでも||でもどちらでもよい。(意味は同じ)
orでつなぐことで、openが真の場合はdieを実行しない。openが偽の場合にdieを実行する。という動作になる。
(式が真になることが確定した段階で残りを評価しないらしい)
orでも||でもどちらでもよい。(意味は同じ)
ファイル読み込み
$line = <F>;
ファイルハンドラから一行読み込む。
@array = <F>;
配列に全部取り込む。一行目は $array[0]; となる。
read(F, $data, 100);
先頭から100バイト読み込む。
ファイルの書き込み
print(F, $data);
出力先をファイルに変えただけで、後は通常のprintと同じ。同様にprintfも使用可能。
ファイルClose
close(R);
close ファイルを閉じる。第一引数がファイルポインタ。
ファイル読み書きのサンプル
#!/usr/bin/[[perl]]
$from_filename=$ARGV[0];
@filename = split(/["."]/,$from_filename);
$to_filename = @filename[0];
open(READ, $from_filename) || die "$from_filename is not opened.";
open(FILE, ">>$to_filename") || die "$to_filename is not opened.";
while (<READ>) {
@list = split(/[","\r\n]/, $_);
for ($i = 1; $i < @list; $i++) {
print FILE trim($list[$i]).",";
}
print FILE "\r\n";
}
close(FILE);
close(READ);
csvファイルを読み込み、trimをしてcsvファイルに書き込む。
(もうちょっと別の用途で書いたコードを元に貼り付けているので微妙ですが…)
(もうちょっと別の用途で書いたコードを元に貼り付けているので微妙ですが…)