名前¶
PerlIO::gzip - Perl extension to provide a PerlIO layer to gzip/gunzip
PerlIO::gzip - PerlIOレイヤーをgzip/gunzipに提供するPerl拡張
概要¶
use PerlIO::gzip;
open FOO, "<:gzip", "file.gz" or die $!;
print while <FOO>; # そしてそれは解凍されるでしょう...
binmode FOO, ":gzip(none)" # ここから圧縮されたストリームを読み始める
説明¶
PerlIO::gzip provides a PerlIO layer that manipulates files in the format used by the gzip
program. Compression and Decompression are implemented, but not together. If you attempt to open a file for reading and writing the open will fail.
PerlIO::gzipはgzip
プログラムで使用される形式でファイルを操作するPerlIOレイヤーを提供します. 圧縮と解凍が実装されますが一緒に実装されるというわけではありません.
EXPORT¶
PerlIO::gzip exports no subroutines or symbols, just a perl layer gzip
PerlIO::gzipはどんなサブルーチンもシンボルもこのperlレイヤーgzip
ですらexportしません
LAYER ARGUMENTS¶
The gzip
layer takes a comma separated list of arguments. 4 exclusive options choose the header checking mode:
gzip
レイヤーはカンマでくぎられたリストの引数を取得します. 4つの排他的なオプションはモードをチェックするヘッダーを選択します.
- gzip
-
The default. Expects a standard gzip file header for reading, writes a standard gzip file header.
デフォルトです. 読み込む為の標準のgzipファイルヘッダーを予想し,標準gzipファイルヘッダに書き込みます.
- none
-
Expects or writes no file header; assumes the file handle is immediately a deflate stream (eg as would be found inside a
zip
file)どのようなヘッダファイルでも予想または書き込みをしません;ファイルハンドルは即座に 圧縮されたストリームと仮定します(例えば zipファイルで見つけられるように)
- auto
-
Potentially dangerous. If the first two bytes match the
gzip
header "\x1f\x8b" then a gzip header is assumed (and checked) else a deflate stream is assumed. No different from gzip on writing.潜在的に危険を含んでいます.最初の2バイトがgzipヘッダ"\x1f\x8b"に一致するならば gzipヘッダと想定され(チェックされ)その他に圧縮されたストリームが想定される. gzipでの書き込みと異なりません.
- autopop
-
Potentially dangerous. If the first two bytes match the
gzip
header "\x1f\x8b" then a gzip header is assumed (and checked) else the layer is silently popped. This results in gzip files being transparently decompressed, other files being treated normally. Of course, this has sides effects such as File::Copy becoming gunzip, and File::Compare comparing the uncompressed contents of files.潜在的に危険を含んでいます.最初の2バイトがgzipヘッダ"\x1f\x8b"に一致するならば gzipヘッダと想定され(チェックされ)その他にレイヤーは黙って取り出されます. 他のファイルが通常扱われるように結果としてgzipファイルは透過的に圧縮される. もちろん,これはgunzipにふさわしいFile::Copyのようにまた, ファイルの解凍されたコンテンツを比較するFile::Compareでは副作用を起こします.
In autopop mode Opening a handle for writing (or reading and writing) will cause the gzip layer to automatically be popped.
autopopモードで書き込みハンドルをオープンする(または読込と書き込みで)のは gzipレイヤーを自動的に取り出すでしょう.
Optionally you can add this flag:
任意でこのフラグを追加することができます:
- lazy
-
For reading, defer header checking until the first read. For writing, don't write a header until the first buffer empty of compressed data to disk. (and don't write anything at all if no data was written to the handle)
読み込むには,始めの読込までヘッダをチェックするのを延期してください。 書き込むには,ディスクに圧縮されたデータを最初のバッファまで,ヘッダを書き込まないで下さい (そしてデータが全くハンドルに書かれなかったなら何も書き込まないで下さい)
By default, gzip header checking is done before the
open
(orbinmode
) returns, so if an error is detected in the gzip header theopen
orbinmode
will fail. However, this will require reading some data, or writing a header. With lazy set on a file opened for reading the check is deferred until the first read so theopen
should always succeed, but any problems with the header will cause an error on read.デフォルトで,gzipヘッダのチェックは
open
(またはbinmode
)の前に実施され返される, したがって誤りがgzipヘッダに検出されるとopen
またはbinmode
は失敗するでしょう. しかしながら,これはいくらかのデータを読み込むまたは書き込むことを必要とするでしょう. 読み込む為に開かれたファイル上に怠惰な設定がある状態で,始めの読込のチェックが延期されるので,open
はいつでも成功するべきです,しかし,ヘッダーに関するどんな問題も読込の時にエラーを引き起こすでしょう.open FOO, "<:gzip(lazy)", "file.gz" or die $!; # 危険. while (<FOO>) { print; } # ワオ.駄目ですね. あなたはエラーとEOFを見分けていません.
If you're not careful you won't spot the errors - like the example above you'll think you got end of file.
慎重で無いのならば上の例でファイルの終わりを見つけたと思ったようにあなたはエラーを見つけないでしょう
lazy is ignored if you are in autopop mode.
autopopモードであれば怠惰は無視される.
作者¶
Nicholas Clark, <[email protected]>
SEE ALSO¶
perl, gzip, rfc 1952 (the gzip file format specification), rfc 1951 (DEFLATE compressed data format specification)
翻訳者¶
atsushi kobayashi([email protected])