WEBシステム開発・ディレクション
ファイルの各行に、配列によってアクセスできるモジュールなのです。 変更は随時ファイルに反映されるので、用途によっては便利、用途によっては不便。
use Tie::File;
my $obj = tie my @array, 'Tie::File', "filename" or die;
$obj->flock;
# 配列は0から始まるので、[0]が1行目。
$array[13] = 'blah'; # ファイルの14行目を'blah'に変更
print $array[42]; # ファイルの43行目をprint
$n_recs = @array: # このファイルの行数を取得
$#array -= 2; # ファイルの最後の2行を削除
for (@array) {
s/PERL/Perl/g; # ファイル中の「PERL」を「Perl」に置換
}
untie @array; # これでファイルclose。
Tie::Fileの配列の要素をundefすると、その行は空行になる。
ファイル行数は変わらない。autochompにfalseを指定しない限りは、ファイル中の改行は意識する必要なし。
自動的に取り除いたり付け加えたりしてくれる。
-- こんなかんじ...tie my @array, 'Tie::File', 'filename', autochomp => 0;個人的には、頻繁に使ってます。:-) ちょっとテキストファイルをどうにかしたいだけ、って時とか、使い捨てプログラムには、とりあえず早く書けていいです。
長く使い続ける予定のシステムだったら、もっと他の方法を考えるかな...。 DB使うとかさ。
最終更新日:2008/07/12