![]() |
![]() |
![]() |
![]() |
管理運営:有限会社ミスティーネット |
|||
| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問合せ | ミスティーネット | リンク集 | | |||
![]() |
![]()
![]()
![]()
|
HOME >> ファイルの処理
■ ファイルの読み書き
ファイルの内容を読み書きする場合には、open 関数を使ってファイルを開き、そのファイルのファイルハンドルを取得します。
ファイルへのアクセスは、このファイルハンドルを使って行ないます。
ファイルの処理が終了したら、 close 関数を使ってファイルを閉じます。 → open 関数のリファレンス → close 関数のリファレンス ![]() ファイルの読み込み・ファイルの書込み・ファイルの新規作成など、ファイルを操作する場合はすべて open 関数を使います。 【書式】
open DATA "file.txt"; ← file.txt をオープンします
ファイルハンドル名には半角英数字が使えます(全角文字は指定できません)。@data = <DATA>; ← ファイルハンドルから配列にデータを読み込みます close DATA; ← file.txt をクローズします ファイル名の指定には変数を使うことも可能です。 指定されたファイルが存在しない場合には、エラーとなります。 ファイルの書き込みでは、ファイルの内容がすべて変更されます。 【書式】
open DATA ">file.txt"; ← file.txt をオープンします
指定されたファイルが存在しない場合には、同名のファイルを作成して書込みます。print DATA @data; ← 配列の内容をファイルに書き込みます close DATA; ← file.txt をクローズします 同名ファイルが存在する場合には、そのファイルを上書きして書き込みます。 ファイル内容を読み込んで、内容の一部を変更した後、再度、変更したデータを書き込む場合などに使います。 【書式】
open DATA "+<file.txt"; ← file.txt をオープンします
seek DATA 0, 2; ← ファイルの末尾に移動します print DATA $data; ← ファイルの末尾に変数の内容を追加書き込みます close DATA; ← file.txt をクローズします 追加書き込みでは、ファイルの末尾にデータを書き込みます。 【書式】
open DATA ">>file.txt"; ← file.txt をオープンします
順番にデータが追加されていくログファイルなどに使用します。
print DATA @data; ← ファイルの末尾に配列の内容を追加して書き込みます close DATA; ← file.txt をクローズします ■ ファイルロックを行なう
複数のユーザーが一つのファイルに対して同時に読み書きを行なうと、ファイルの内容が壊れてしまうことがあります。
ファイルロックを行なうと、現在使用中のファイルをロックして、第三者がファイルにアクセス出来ないようにします。
【書式】→ flock 関数のリファレンス
use Fcntl ':flock';
ここでは、明示的にファイルロックを解除させていますが、
ファイルをクローズすると自動的にファイルロックも解除されるため、特に指定する必要はありません。open DATA ">file.txt"; flock(DATA, LOCK_EX); ← ファイルロック開始 print DATA @data; flock(DATA, LOCK_NB); ← ファイルロック解除 close DATA; * flock() は、WinNT以前の 32bit対応Windows や Windows98 など一部のOSには対応しておりません。 ■ 読み込み位置を移動する
seek 関数を使うと、現在のファイルの読み込み位置を移動することが出来ます。 ファイルの先頭や途中に書き込みを行ないたい場合は、seek でその位置に移動して行ないます。 【書式】→ seek 関数のリファレンス
open DATA "+<file.txt"; ← file.txt をオープンします
seek DATA 0, 0; ← ファイルの先頭に移動します print DATA $data; ← ファイルの先頭に変数の内容を追加書き込みます close DATA; ← file.txt をクローズします ■ ファイルサイズの変更
truncate 関数を使うと、ファイルサイズを変更することが出来ます。 ファイルサイズを0に切り詰め、新にデータを書き込みたいときなどに使用します。 【書式】→ truncate 関数のリファレンス
open DATA "+<file.txt";
seek DATA 0, 0; ← ファイルの先頭に移動します truncate DATA 0; ← データサイズを空にします print DATA $data; ← ファイルの先頭に変数の内容を書き込みます close DATA;
|