=head1 NAME Enjoy! Perl Programming - No.28 =head1 SYNOPSIS データの保存 - ファイル処理の実際(3) =head1 DESCRIPTION Perl言語におけるファイル処理の実際。 =head2 既存のファイルの先頭に追記する ユーザーからの入力データをファイルの先頭に追記したい。 # [例題28-1] print '-' x 5 . "New file created\n"; open FH, '>no28-1.write.txt' # 書込みオープン or die "File open error: $!"; for (qw|yamaha suzuki|) { print "$_\n"; print FH "$_\n"; # ファイル書き込み } close FH; # ファイルクローズ print '-' x 5 . "Inserting\n"; open FH, 'no28-1.write.txt' # 読込みオープン or die "File open error: $!"; @file = ; # 配列にファイルをコピーする close FH; # ファイルクローズ for (qw|honda kawasaki|) { print "$_\n"; unshift @file, "$_\n"; # 配列の先頭に追加 } open FH, '>no28-1.write.txt' # 書込みオープン or die "File open error: $!"; print FH @file; # ファイル書き込み close FH; # ファイルクローズ print '-' x 5 . "Reading\n"; open FH, 'no28-1.write.txt' # 読込みオープン or die "File open error: $!"; while () { print; } close FH; # ファイルクローズ ファイルの先頭に追記するには既存のデータをどこかに保持する ことが必要になる。ここではいったん配列にコピーしている。 @file = ; # 配列にファイルをコピーする 配列の内容をファイルに書込むときは "print" 関数の引数に配列名 を渡せば良い。 print FH @file; # ファイル書き込み 配列はリストに展開される。ファイルハンドルにはテキストファイル の行の概念は無いことを思い出して欲しい。単にバイト列でファイル ハンドルを介してファイルに書き出される。 配列をダブルクォートで囲まないことに注意。ダブルクォートで囲ま れた配列はスペースを間に挟んで展開される。 =head1 SEE ALSO "open","print","unshift" 関数のドキュメントページ。 "perlfaq5" マニュアルページ =head1 TESTED OS : Windows 2000 Perl: ActivePerl v5.6.1 build 631 =head1 AUTHOR Name:吉田和弘(YOSHIDA Kazuhiro) Email:y-kazu@lares.dti.ne.jp Homepage:http://www.lares.dti.ne.jp/~y-kazu/perl/