=head1 NAME Enjoy! Perl Programming - No.20 =head1 SYNOPSIS データの保存 - ファイル操作 =head1 DESCRIPTION 今回はPerl言語における、ファイルの操作について学んでみたいと 思います。ここを理解すると、Perlスクリプトの処理結果を保存し たり、ファイルから処理に必要なデータを読み込んだりすることが 出来るようになります。 さて、徐々に暑くなってくるこの季節、生ものは特に腐りやすく 「保存」には注意が必要です。サラリーマンの現場でもそれは同じ。 上司の命令とあらばすぐに飛んでいき、教育的指導が済んで席に戻 ればファイルの「保存」を忘れた為に「不正な処理」で朝からの 作業が無駄になってしまった。なんていう話を良く聞きます。 そうならない為にも、あなたのPerlプログラムにはきちんと「保存」 の機能を持たせて、「涼しい」顔で仕事をしたいものですね! =head2 リダイレクト これまでは"print"関数を使って処理結果を画面に出力していました。 指定が無い場合"print"関数の出力先は標準出力"STDOUT"(普通はパソ コンの画面)です。 print "Hello World!\n"; # 画面に出力 print STDOUT "Hello World!\n"; # 同じこと リダイレクトを使い、出力先をファイルに変更することで、簡単に 処理結果をファイルに保存することが出来ます。 D:\usr\mag2>perl -w hello.pl > hello.txt D:\usr\mag2>type hello.txt Hello World! 現在のファイルに処理結果を追加して保存することも出来ます。 D:\usr\mag2>perl -w hello.pl >> hello.txt D:\usr\mag2>type hello.txt Hello World! Hello World! =head2 ファイル処理の流れ 実際のファイル処理の流れを見てみましょう。 [例題20-1] open( FILE, "< hello.txt" ) # ファイルオープン or die "File open error"; while ( defined( $line = ) ) # 1行読み込み { chomp( $line ); print "\$line = $line\n"; # 処理を行う } close( FILE ); # ファイルクローズ 基本的には、まず「ファイルオープン」を行いファイルハンドルと ファイルを結びつけます。次にファイルハンドルからデータを取得し て何らかの処理をし、最後に「ファイルクローズ」を行ないます。 =head2 ファイルハンドル Perlには外部とデータのやり取りを行うために「ファイルハンドル」 と呼ばれるデータタイプが用意されています。"STDIN"、"STDOUT" など はPerlで標準で用意されたファイルハンドルで、それぞれ「標準入力」 「標準出力」に結び付けられています。[例題20-1]では"FILE"という ファイルハンドルが"hello.txt"というファイルに結び付けられています。 ファイルハンドルにはスカラー変数や配列変数のようなデータタイプ を表す記号はありません。名前もPerlで許されている範囲で自由に付 けることが出来ますが、一般的に「大文字」が推奨されています。 「大文字」で「ファイルハンドル」と一目で分かるような名前を付け るようにしましょう。 ファイルハンドルの例: FILE FILEHANDLE FH =head2 ファイルオープン ファイルハンドルとファイルを結びつけるには"open"関数を使います。 open( FILE, "< hello.txt" ); # ファイルオープン open FILE, "< hello.txt"; # 同じことをカッコを付けずに行う =head2 ファイルクローズ オープンしたファイルハンドルは処理を終了した時点で必ずクローズ します。ファイルハンドルをクローズするには"close"関数を使います。 close( FILE ); # ファイルクローズ close FILE; # 同じことをカッコを付けずに行う =head1 SEE ALSO "open"と"close" 関数の各ドキュメントページ。 "perlopentut"ファイルオープンチュートリアルページ。 =head1 編集後記 今回から元データをPOD形式(Perl標準ドキュメント形式)で記述して います。その為レイアウトを多少変更していますが、ご了承ください。 またPOD形式で記述した元データは下記から取得することが出来ます。 http://www.lares.dti.ne.jp/~y-kazu/perl/mag2/ スクリプト実行環境 OS : Windows ME, NT4.0, 2000 Perl: ActivePerl v5.6.1 build 631 マガジン登録/解除 マガジン名:Enjoy! Perl Programming マガジンID:0000082873 登録/解除:http://www.lares.dti.ne.jp/~y-kazu/perl/ 配信   :週刊 編集/発行:吉田和弘(Yoshida Kazuhiro) E-Mail  :y-kazu@lares.dti.ne.jp このメールマガジンは、インターネットの本屋さん『まぐまぐ』を 利用して発行しています。http://www.mag2.com/ 感謝!!