=encoding utf-8
=head1 NAME
=begin original
Data::Section::Simple - Read data from __DATA__
=end original
Data::Section::Simple - __DATA__セクションからのデータの読み出し
=head1 SYNOPSIS
=begin original
use Data::Section::Simple qw(get_data_section);
# Functional interface -- reads from caller package __DATA__
my $all = get_data_section; # All data in hash reference
my $foo = get_data_section('foo.html');
# OO - allows reading from other packages
my $reader = Data::Section::Simple->new($package);
my $all = $reader->get_data_section;
__DATA__
@@ foo.html
Hello
@@ bar.tt
[% IF true %]
Foo
[% END %]
=end original
use Data::Section::Simple qw(get_data_section);
# 関数インタフェース -- 呼び出し元パッケージの __DATA__セクションからの読み出し
my $all = get_data_section; # All data in hash reference
my $foo = get_data_section('foo.html');
# オブジェクト指向 - 他のパッケージからの読み出しも可能
my $reader = Data::Section::Simple->new($package);
my $all = $reader->get_data_section;
__DATA__
@@ foo.html
Hello
@@ bar.tt
[% IF true %]
Foo
[% END %]
=head1 DESCRIPTION
=begin original
Data::Section::Simple is a simple module to extract data drom
C<__DATA__> section of the file.
=end original
Data::Section::Simpleはファイルの C<__DATA__>セクションから
データの抽出を行うシンプルなモジュールです.
=head1 LIMITATIONS
=begin original
As the name suggests, this module is a simpler version of the
excellent L. If you want more functionalities such as
merging data sections or changing header patterns, use
L instead.
This module does not implement caching (yet) which means in every
C or C<< get_data_section($name) >> this module
seeks and re-reads the data section. If you want to avoid doing so for
the better performance, you should implement caching in your own
caller code.
=end original
名前が示すとおり, このモジュールは, 優れたモジュールである Lを
シンプルにしたものです. もしデータセクションの統合やヘッダパターンの
変更など, より多くの機能を利用したい場合は代わりに Lを
利用してください.
このモジュールはキャッシュ機能を(まだ)実装していません, つまり C
, C<< get_data_section($name) >>を行うたびに, データセクションの探索と
再読込が行われます. このことを回避し, パフォーマンスを向上させたいので
あれば, あなたのコード側でキャッシュ機能を実装すべきです.
=head1 BUGS
=begin original
If you data section has literal C<__DATA__> in the data section, this
module might be tricked by that. Although since its pattern match is
greedy, C<__DATA__> appearing I the actual data section
(i.e. in the code) might be okay.
This is by design -- in thoery you can C the DATA handle before
reading it, but then reloading the data section of the file (handy for
developing inline templates with PSGI web applications) would fail
because the pos would be changed.
If you don't like this design, again, use the superior
L.
=end original
もしデータセクション内に C<__DATA__>というリテラルが存在したら,
このモジュールはそれに騙されてしまいます. しかしパターンマッチは最長マッチで
行うので, C<__DATA__>が, 実際のデータセクションよりI<前に>
(すなわち i.e. コード内)出現すれば, 問題ないでしょう.
これは設計の問題です -- 理論的にはデータを読み取る前に DATAハンドルにC
することは可能ですが, ファイル(PSGIウェブアプリケーションの開発時
のお手軽なファイル内テンプレート)のデータセクションの再読込に失敗することに
なります. なぜなら位置が変わってしまうからです.
もしこの設計が好まないのであれば, 繰り返しになりますが,
より高機能な Lを利用してください.
=head1 AUTHOR
Tatsuhiko Miyagawa Emiyagawa@bulknews.netE
=head1 COPYRIGHT
=begin original
Copyright 2010- Tatsuhiko Miyagawa
The code to read DATA section is based on Mojo::Command get_all_data:
Copyright 2008-2010 Sebastian Riedel
=end original
Copyright 2010- Tatsuhiko Miyagawa
DATAセクションからの読み出しのコードは Mojo::Commandの get_all_dataを
ベースにしています:
Copyright 2008-2010 Sebastian Riedel
=head1 LICENSE
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=head1 SEE ALSO
L L
=cut