
PerlIO::Util::JA - PerlIOに関する汎用ユーティリティ集

This document describes PerlIO::Util version 0.70

use PerlIO::Util;
# utility layers
open $in, '+<:flock', $file; # with flock(IN, LOCK_EX)
open $in, '+<:creat :excl', $file; # with O_CREAT | O_EXCL
open $out, '>:tee', $file, \$scalar, \*STDERR;
print $out "foo"; # print to $file, $scalar and *STDERR
# utility routines
$in = PerlIO::Util->open('<', $file); # it dies on fail
*STDOUT->push_layer(scalar => \$scalar); # it dies on fail
print "foo";
print *STDOUT->pop_layer(); # => scalar
print $scalar; # => foo

PerlIO::UtilはPerlIOに関するユーティリティレイヤとユーティリティメソッドを 提供するモジュールである。
ユーティリティレイヤはPerlIO::Utilの一部だが,使用に際してuse PerlIO::Util と書く必要はない。PerlIOは必要に応じてレイヤを自動的にロードする。

flock()に対する簡易なインターフェイスを提供する。
See PerlIO::flock.
Fcntlを用いずに,O_CREATを使用する。
See PerlIO::creat.
Fcntlを用いずに,O_EXCLを使用する。
See PerlIO::excl.
複数のファイルやストリームに同時に出力する。
See PerlIO::tee.
PerlIOインターフェイスでディレクトリを読む。
ディレクトリハンドルをファイルハンドルとして扱うため, :encodeingなどのPerlIOレイヤを適用できる。
See PerlIO::dir.
ファイルを逆順に読む。
一旦全て読み込んでからreverse()するより高速だが, コンソールやパイプなどのseek()できないストリームは扱えない。
See PerlIO::reverse.
ファイルシステムエンコーディングを扱う。
与えられたファイル名がPerlのユニコード文字列であるとき, Encodeモジュールを使ってファイルシステムのエンコーディングに変換する。 なお,Windows以外では自動的にファイルシステムのエンコーディングを取得するが, それ以外の環境では環境変数PERLIO_FSEで指定するか,use PerlIO::fseの引数としてエンコーディングを指定する必要がある。
なお,このレイヤーは0.70で独立したモジュールとなった。
See PerlIO::fse.

ビルトイン関数のopen()を呼び出し,IO::Handleオブジェクトを返す。 open()に失敗すると致命的エラーとなる。
Perlのopen()と異なり(またIO::Fileのnew()とも異なり),modeは 常に必須である。つまり,基本的にはIO::Fileのnew()の代替として使用できるが,常に3-arg openを強要し,失敗すると致命的エラーとなる点でIO::Fileのnew()と異なる。
定義済みのPerlIOレイヤの名前を返す。
FILEHANDLEのPerlIOレイヤの名前を返す。 これはPerlIO::get_layers(FILEHANDLE)の別名である。
See "Querying the layers of filehandles" in PerlIO.
binmode(FILEHANDLE, ':layer(arg)')とほぼ同じだが,argはどんな データ型でもよい。たとえば,:scalarに対してスカラリファレンスを与えることができる。
このメソッドは失敗すると致命的エラーとなる。成功したときはFILEHANDLEを返す。
binmode(FILEHANDLE, ':pop')に等しい。これはFILEHANDLEの最上部の レイヤを取り除く。なお,:utf8や:flockのようなダミーレイヤを取り除くことはできない。
このメソッドは実際に取り除いたレイヤの名前を返す。

Perl 5.8.1 or later, and a C compiler.

No bugs have been reported.
Please report any bugs or feature requests to <gfuji (at) cpan.org>, or through the web interface at http://rt.cpan.org/.

PerlIO::flock, PerlIO::creat, PerlIO::excl, PerlIO::tee, PerlIO::dir, PerlIO::reverse, PerlIO::fse.
PerlIO for push_layer() and pop_layer().
perliol for implementation details.

Goro Fuji (藤 吾郎) <gfuji(at)cpan.org>.

Copyright (c) 2008, Goro Fuji <gfuji(at)cpan.org>. Some rights reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.