ミスティーネットPerl・CGI講座 パール・CGIレッスン MISTY-NETレンタルサーバー・PERLプログラミング講座 CGI&PERL究極のレシピ

管理運営:有限会社ミスティーネット

| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問合せ | ミスティーネット | リンク集 |
Perl言語リファレンス

ミスティーネットPerl・CGI講座/基本編
ミスティーネットPerl・CGI講座/基本編
始めに 始めに
変数について 変数について
処理の制御1 処理の制御1
処理の制御2 処理の制御2
配列の処理 配列の処理
ハッシュの処理 ハッシュの処理
数値の扱い 数値の扱い
文字の扱い 文字の扱い
時間の処理 時間の処理
サブルーチン サブルーチン
ファイルの処理 ファイルの処理
ディレクトリの処理 ディレクトリ処理
CGIについて CGIについて
漢字の処理 漢字の処理
    (文字コード)
Cookie の処理 Cookie の処理
正規表現1 正規表現1
正規表現2 正規表現2
演算子について 演算子について
ライブラリ ライブラリ
デバッグ デバック
環境変数について 環境変数
ミスティーネットPerl・CGI講座/基本編

ミスティーネットPerl・CGI講座/応用編
ミスティーネットPerl・CGI講座/応用編
カウンターを作ってみよう カウンターを
     作ってみよう!
ミニゲームを作ってみよう ミニゲームを
     作ってみよう!
ミスティーネットPerl・CGI講座/応用編

ミスティーネットPerl・CGI講座/WEB講座一覧
ミスティーネット
HTML講座 HTML講座
スタイルシート講座 スタイルシート講座
JavaScript講座 JavaScript講座
UNIXコマンド講座 UNIXコマンド講座

ミスティーネット
ラブラブメールでツーショット

人気サイトランキング

人気サイトランキング

8daysランキング

  HOME >> ファイルの処理
  1. ファイルの読み書き
  2. ファイルロックを行なう
  3. 読み込み位置を移動
  4. ファイルサイズの変更

■ ファイルの読み書き
ファイルの内容を読み書きする場合には、open 関数を使ってファイルを開き、そのファイルのファイルハンドルを取得します。 ファイルへのアクセスは、このファイルハンドルを使って行ないます。 ファイルの処理が終了したら、 close 関数を使ってファイルを閉じます。

  → open 関数のリファレンス
  → close 関数のリファレンス

〔ファイル処理のイメージ〕



ファイルの読み込み・ファイルの書込み・ファイルの新規作成など、ファイルを操作する場合はすべて open 関数を使います。
【書式】
open ファイルハンドル "ファイル名";

例: open DATA "file.txt";
open DATA "file.txt";    ← file.txt をオープンします
@data = <DATA>;    ← ファイルハンドルから配列にデータを読み込みます
close DATA;    ← file.txt をクローズします
ファイルハンドル名には半角英数字が使えます(全角文字は指定できません)。
ファイル名の指定には変数を使うことも可能です。
指定されたファイルが存在しない場合には、エラーとなります。




ファイルの書き込みでは、ファイルの内容がすべて変更されます。
【書式】
open ファイルハンドル ">ファイル名";

例: open DATA ">file.txt";
open DATA ">file.txt";    ← file.txt をオープンします
print DATA @data;    ← 配列の内容をファイルに書き込みます
close DATA;    ← file.txt をクローズします
指定されたファイルが存在しない場合には、同名のファイルを作成して書込みます。
同名ファイルが存在する場合には、そのファイルを上書きして書き込みます。




ファイル内容を読み込んで、内容の一部を変更した後、再度、変更したデータを書き込む場合などに使います。
【書式】
open ファイルハンドル "+<ファイル名";

例: open DATA "+<file.txt";
open DATA "+<file.txt";    ← file.txt をオープンします
seek DATA 0, 2;    ← ファイルの末尾に移動します
print DATA $data;    ← ファイルの末尾に変数の内容を追加書き込みます
close DATA;    ← file.txt をクローズします




追加書き込みでは、ファイルの末尾にデータを書き込みます。
【書式】
open ファイルハンドル ">>ファイル名";

例: open DATA ">>file.txt";
open DATA ">>file.txt";    ← file.txt をオープンします
print DATA @data;    ← ファイルの末尾に配列の内容を追加して書き込みます
close DATA;    ← file.txt をクローズします
順番にデータが追加されていくログファイルなどに使用します。





■ ファイルロックを行なう
複数のユーザーが一つのファイルに対して同時に読み書きを行なうと、ファイルの内容が壊れてしまうことがあります。 ファイルロックを行なうと、現在使用中のファイルをロックして、第三者がファイルにアクセス出来ないようにします。
【書式】
flock(ファイルハンドル, 操作モード);

操作モードは 下記の値で指定します。

LOCK_SH ・・・ 共有ロック・読み込み時に使用
LOCK_EX ・・・ 排他ロック・書き込み時に使用
LOCK_UN ・・・ ノンブロッキンモード・余り使われません
LOCK_NB ・・・ ロック解除
  → 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 ファイルハンドル, オフセット, 起点;

オフセットは起点からのバイト数です。
起点は 0, 1, 2 の数字で指定します。
0 ・・・ ファイルの先頭
1 ・・・ 現在のファイルポインタ
2 ・・・ ファイルの末尾
  → seek 関数のリファレンス

open DATA "+<file.txt";    ← file.txt をオープンします
seek DATA 0, 0;    ← ファイルの先頭に移動します
print DATA $data;    ← ファイルの先頭に変数の内容を追加書き込みます
close DATA;    ← file.txt をクローズします





■ ファイルサイズの変更
truncate 関数を使うと、ファイルサイズを変更することが出来ます。
ファイルサイズを0に切り詰め、新にデータを書き込みたいときなどに使用します。
【書式】
truncate ファイルハンドル, ファイルサイズ;
  → truncate 関数のリファレンス

open DATA "+<file.txt";
seek DATA 0, 0;    ← ファイルの先頭に移動します
truncate DATA 0;    ← データサイズを空にします
print DATA $data;    ← ファイルの先頭に変数の内容を書き込みます
close DATA;





← 前のページへ戻る 次のページへ →


| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問い合わせ | ミスティーネット |
(C)Copyright 2002 ミスティーネット Inc. All Right Reserved.