Text-CVS_XS-0.23 > 0.23 との差分

Text::CSV_XS 0.23 と 0.23 の差分

11
22=encoding utf8
33
44=head1 名前
55
66Text::CSV_XS - CSV形式の操作ルーチン
77
88=head1 概要
99
1010 use Text::CSV_XS;
1111
1212 $csv = Text::CSV_XS->new(); # 新しいオブジェクトを作る
1313 $csv = Text::CSV_XS->new(\%attr); # 新しいオブジェクトを作る
1414
1515 $status = $csv->combine(@columns); # 縦列を連結して一つの文字列にする
1616 $line = $csv->string(); # 連結したその文字列を得る
1717
1818 $status = $csv->parse($line); # CSV文字列をパースしてフィールド群に切り分ける
1919 @columns = $csv->fields(); # パースされたそのフィールド群を得る
2020
2121 $status = $csv->status(); # 直前のステータスを得る
2222 $bad_argument = $csv->error_input(); # 直前の不正引数を得る
2323
2424 $status = $csv->print($io, $columns); # $io ファイルへ、
2525 # すぐさまフィールド群を書き込む
2626
2727 $columns = $csv->getline($io); # $io ファイルから1行を読み込み、パース
2828 # した後にフィールド群の配列リファレンスを返す
2929
3030 $csv->types(\@t_array); # 縦列の形式を設定する
3131
3232=head1 説明
3333
34コンマ区切り文字列 CSV を組み立てたり切り分けたりするのに、Text::CSV_XS は便利な機能を提供します。Text::CSV_XS クラスのインスタンスでは、フィールド群を連結して CSV 文字列にしたり、その反対にCSV文字列をパースしてフィールド群にすることができます。
34コンマ区切り文字列 CVS を組み立てたり切り分けたりするのに、Text::CVS_XS は便利な機能を提供します。Text::CVS_XS クラスのインスタンスでは、フィールド群を連結して CSV 文字列にしたり、その反対にCSV文字列をパースしてフィールド群にすることができます。
3535
3636
3737=head1 関数群
3838
3939=over 4
4040
4141=item version()
4242
4343(クラスメソッド) 使用しているモジュールのバージョンを返す。
4444
4545=item new(\%attr)
4646
4747(クラスメソッド) 新しい Text::CSV_XS インスタンスを返す。オブジェクトの属性値は、ハッシュリファレンス C<\%attr> で(随意に)指定する。次の属性値を指定できる:
4848
4949=over 8
5050
5151=item quote_char
5252
5353空白文字を含むフィールドをクオートするための文字で、デフォルトは二重引用符 (C<">)。undef を指定すると、文字列がクオートされない(空白文字を使わないような簡素な場合のみ使用すること)。
5454
5555=item eol
5656
5757横行に加える行の終わりを示す文字で、一般的には C<undef> (無、デフォルト)、 C<"\012"> (ラインフィード) もしくは C<"\015\012"> (キャリッジリターン+ラインフィード) である。
5858
5959=item escape_char
6060
6161クオートしたフィールドの中でエスケープを施す文字で、デフォルトではクオート文字 (C<">) と同じ。
6262
6363=item sep_char
6464
6565フィールドを区切る文字で、デフォルトはコンマ (C<,>)。
6666
6767=item binary
6868
6969この属性値が真 (TRUE) ならば、クオートしたフィールドの中でバイナリ文字を使用することができる。このバイナリ文字にはラインフィード、キャリッジリターン、そして NUL バイトが含まれている( NUL バイトは C<"0> としてエスケープしなくてはならない)。デフォルトで、この機能はオフ。
7070
7171=item types
7272
7373カラムの形式;この属性値はすぐさま後述の I<types> メソッドに渡される。I<types> メソッドを使用する場合を除き、この属性値を設定してはならない。詳しくは、後述の I<types> メソッドの説明を参照。
7474
7575=item always_quote
7676
77フィールド内のテキストが区切り文字を含むような場合など、その必要がある際にのみデフォルトではフィールドはクオートで区切られる。この属性値を真 TRUE に設定すると、全てのフィールドがクオートされる。この機能は外部アプリケーションを用いる場合に便利である。( Text::CSV_XS を使わない可哀想なプログラマのために :-)
77フィールド内のテキストが区切り文字を含むような場合など、その必要がある際にのみデフォルトではフィールドはクオートで区切られる。この属性値を真 TRUE に設定すると、全てのフィールドがクオートされる。この機能は外部アプリケーションを用いる場合に便利である。( Text::CVS_XS を使わない可哀想なプログラマのために :-)
7878
7979=back
8080
8181これらをまとめると、
8282
8383 $csv = Text::CSV_XS->new();
8484
8585は、以下と同じである;
8686
8787 $csv = Text::CSV_XS->new({
8888 'quote_char' => '"',
8989 'escape_char' => '"',
9090 'sep_char' => ',',
9191 'binary' => 0
9292 });
9393
9494=item combine
9595
9696 $status = $csv->combine(@columns);
9797
98このオブジェクト関数は、引数から CSV 文字列を組み立て、成功か失敗のステータスを返す。失敗するのは、おそらく引数が足らないか不正な文字列を引数が含むからであろう。成功した場合、 C<string()> によって組み立てた CSV 文字列を得ることができる。失敗した場合、C<string()> は 未定義を返し C<error_input()> によって無効だった引数を得ることができる。
98このオブジェクト関数は、引数から CVS 文字列を組み立て、成功か失敗のステータスを返す。失敗するのは、おそらく引数が足らないか不正な文字列を引数が含むからであろう。成功した場合、 C<string()> によって組み立てた CSV 文字列を得ることができる。失敗した場合、C<string()> は 未定義を返し C<error_input()> によって無効だった引数を得ることができる。
9999
100100=item print
101101
102102 $status = $csv->print($io, $columns);
103103
104104combine と似ているが、このメソッドは配列リファレンス(配列ではない)が入力されることを期待する;組み立てた CSV 文字列をまったく作らない;I<$io> オブジェクトへ直ちに書き込む。ここで、I<print> メソッドに与えるのは通常、I<$io> オブジェクトか 類似した他のオブジェクトである。注意すべき事として、この呼び出しで次の方法は間違いである;
105105
106106
107107 open(FILE, ">whatever");
108108 $status = $csv->print(\*FILE, $columns);
109109
110110C<\*FILE> グロブはオブジェクトではないので、print メソッドを実行することができない。解決方法は IO:File オブジェクトを使用するか IO::Wrap オブジェクトの中へグロブを隠蔽してしまうことである。詳細は、L<IO::File(3)> と L<IO::Wrap(3)> を参照。
111111
112112パフォーマンス上の理由から、この print メソッドは組み立てた CSV 文字列を外部へ提供しない。とりわけ I<$csv-E<gt>string()>, I<$csv-E<gt>status()>, I<$csv->fields()>, そして I<$csv-E<gt>error_input()> は、このメソッドの後で意味をなさない。
113113
114114=item string
115115
116116 $line = $csv->string();
117117
118118このオブジェクト関数は、 C<parse()> への入力したものか C<combine()> で組み立てられた CSV 文字列か、それが何であれ直前のものを返す。
119119
120120=item parse
121121
122122 $status = $csv->parse($line);
123123
124124このオブジェクト関数は CSV 文字列をフィールドに切り分けて、しかる後に成功か失敗のステータスを返す。失敗するのは、引数の不足か与えられた CSV 文字列が不適切なフォーマットだからであろう。成功した場合には、C<fields()> メソッドによって切り分けられたフィールドが得られる。失敗の場合には、 C<fields()> は未定義値を返し C<error_input()> によって不正な引数を得ることができる。
125125
126126カラムの形式を設定するために、I<types()> メソッドを使うべきである。後述の説明を参照。
127127
128128
129129=item getline
130130
131131 $columns = $csv->getline($io);
132132
133133これは print と対をなすもので、parse が combine の対となるようなものだ: IO オブジェクト $IOにおいて $IO->getline() を用いて1行を読み出し、この1行をパースして配列リファレンスに納める。この配列リファレンスが返されるか、失敗した場合には undef が返される。
134134
135135繰り返しになるが、 I<$csv-E<gt>string()>, I<$csv-E<gt>fields()>, そして I<$csv-E<gt>status()> メソッドはこのメソッドの後では意味をなさない。
136136
137137=item types
138138
139139 $csv->types(\@tref);
140140
141141このメソッドは、縦行を指定された形式へ強制的に変換するのに用いる。たとえば、整数値で表現された1カラム、倍精度数形式の2カラム、文字列の1カラムがあった場合は、次を実行することになるだろう
142142
143143 $csv->types([Text::CSV_XS::IV(),
144144 Text::CSV_XS::NV(),
145145 Text::CSV_XS::NV(),
146146 Text::CSV_XS::PV()]);
147147
148148カラム形式をデコードするときのみ、言い換えると I<parse()> と I<getline()> メソッドを使うときにのみ、このカラム形式が用いられる。
149149
150150
151151カラムタイプを解除するのは次のようにする
152152
153153 $csv->types(undef);
154154
155155あるいはまた、現在の形式を得るには次の方法を採る
156156
157157 $types = $csv->types();
158158
159159=item fields
160160
161161 @columns = $csv->fields();
162162
163163このオブジェクト関数は、 C<combine()> への入力値か C<parse()> から得られる切り分けられたフィールド群か、それが何であれ直前のものを返す。
164164
165165=item status
166166
167167 $status = $csv->status();
168168
169169This object function returns success (or failure) of C<combine()> or
170170C<parse()>, whichever was called more recently.
171171このオブジェクト関数は、 C<combine()> か C<parse()> かそれが何であれ直前のメソッドが成功(もしくは失敗)したかどうかを返す。
172172
173173=item error_input
174174
175175 $bad_argument = $csv->error_input();
176176
177177このオブジェクト関数は、C<combine()> か C<parse()> か、それが何であれ直前のメソッドがエラーとなった引数(もしあれば)を返す。
178178
179179=back
180180
181181=head1 例
182182
183183 require Text::CSV_XS;
184184
185185 my $csv = Text::CSV_XS->new;
186186
187187 my $column = '';
188188 my $sample_input_string = '"I said, ""Hi!""",Yes,"",2.34,,"1.09"';
189189 if ($csv->parse($sample_input_string)) {
190190 my @field = $csv->fields;
191191 my $count = 0;
192192 for $column (@field) {
193193 print ++$count, " => ", $column, "\n";
194194 }
195195 print "\n";
196196 } else {
197197 my $err = $csv->error_input;
198198 print "parse() failed on argument: ", $err, "\n";
199199 }
200200
201201 my @sample_input_fields = ('You said, "Hello!"',
202202 5.67,
203203 'Surely',
204204 '',
205205 '3.14159');
206206 if ($csv->combine(@sample_input_fields)) {
207207 my $string = $csv->string;
208208 print $string, "\n";
209209 } else {
210210 my $err = $csv->error_input;
211211 print "combine() failed on argument: ", $err, "\n";
212212 }
213213
214214=head1 注意
215215
216このモジュールは策定中の CSV フォーマットを元にしているが、そのフォーマットが最も一般的なものとは言い難いかもしれない。
216このモジュールは策定中の CVS フォーマットを元にしているが、そのフォーマットが最も一般的なものとは言い難いかもしれない。
217217
218218=over 4
219219
220220=item 1
221221
222CSV フィールドの中に納めることができる文字には、 0x09 (tab) と of 0x20 (space) から 0x7E (tilde)の包括的な範囲とを含む。バイナリモードではクオートされたフィールドの中において全ての文字を受け付ける。
222CVS フィールドの中に納めることができる文字には、 0x09 (tab) と of 0x20 (space) から 0x7E (tilde)の包括的な範囲とを含む。バイナリモードではクオートされたフィールドの中において全ての文字を受け付ける。
223223
224224=item 2
225225
226226CSV のフィールドは、二重引用符(quote char)で挟まれるべきである。
227227
228228=item 3
229229
230CSV のフィールドの中にコンマ(separator char)がある場合は、二重引用符で挟まれなければならない。
230CVS のフィールドの中にコンマ(separator char)がある場合は、二重引用符で挟まれなければならない。
231231
232232=item 4
233233
234CSV フィールドの中に二重引用符を埋め込む場合は、一対となった二重引用符の間に挟まれなければならない。バイナリモードでは特に、 NUL バイトを示す C<"0> を用いるべきである。
234CVS フィールドの中に二重引用符を埋め込む場合は、一対となった二重引用符の間に挟まれなければならない。バイナリモードでは特に、 NUL バイトを示す C<"0> を用いるべきである。
235235
236236=item 5
237237
238238CSV 文字列は、 0x0A (ラインフィード) もしくは 0x0D + 0x0A(キャリッジリターン + ラインフィード)で終わるべきである。
239239
240240=back
241241
242242=head1 AUTHOR
243243
244244Alan Citterman F<E<lt>alan@mfgrtl.comE<gt>> が、この Perl モジュールを最初に書いた。Alan へ Text::CSV_XS に関するメールをどうか送らないで欲しい。なぜなら、今ではこのモジュールの主要部分を占める C コード部分について、彼は関与していないからである。
245245
246246Jochen Wiedmann F<E<lt>joe@ispsoft.deE<gt>> が、エンコードとデコードのルーチンを有限状態マシンを実装する C コードで書き直し、クオート、エスケープ、そしてセパレーター文字変数、バイナリモード、そして print と getline メソッドを加えた。
247247
248248=head1 SEE ALSO
249249
250250L<perl(1)>, L<IO::File(3)>, L<IO::Wrap(3)>
251251
252252=head1 Translator into Japanese (翻訳者)
253253
254254anahori (at users.sourceforge.jp)
255255
256256Japanized Perl Resources Project (L<http://sourceforge.jp/projects/perldocjp/>)
257257
258258=cut