blog20100901

2013/08/20 - プログラミング言語 Perl にまつわる etc. - Perl monger
参考 : perldoc, perldoc.jp, search.cpan.org, perldoc.perl.org ...
「 初めての Perl 第 6 版 」(オライリー・ジャパン発行 ISBN978-4-87311-567-2) 」
「 続・初めての Perl 改訂版 」(オライリー・ジャパン発行 ISBN4-87311-305-9) 」
「 Effective Perl 第 2 版 」(翔泳社発行 ISBN978-4-7981-3981-4) 」 ... etc,.

Perl Perl_0

Perl 「 ファイルハンドル 」: 3 引数の open 演算子 (0x44)

Perl 「 ファイルハンドル 」: 3 引数の open 演算子 (0x44)

目次 - Perl Index



Theme



Perl について、復習を兼ねて断片的な情報を掲載して行く連載その 0x44 回。

Perl 5.6 以降で使える 3 引数のファイルオープンについて。




3 引数の open



前回説明した open 演算子の利用方法は、引数を 2 つ受け取る方式でした。書式では次のものに相当すると思われます。


open FILEHANDLE, EXPR


もし、あなたの使う Perl のバージョンが 5.6 以降であれば、次の書式を利用することが出来ます。


open FILEHANDLE, MODE, EXPR


実際にどの様に指定するかを見てみましょう。

3 引数の指定



open 演算子に 3 つの引数を指定する場合は、次の様に「 , 」( Comma ) の区切りを追加します。


open FILE, '<', $filename;
open FILE, '>', $filename;
open FILE, '>>', $filename;


これにはいくつかメリットがあります。

まず、前回確認したようなモード ( > 等 ) に対するファイル名の干渉を防止出来ます。

例えファイル名が「 >filename 」だったとしても、モード「 > 」が干渉されることはありません。

また、ファイル名の先頭に空白があった場合、空白を空白として扱います。2 引数の open では空白が無視されてしまうことを思い出してください。

些細とも思えるこうした効果は、セキュリティの向上にも大いに役立つそうです。

また、3 引数の open では、エンコーディング ( Encoding ) の指定も可能です。

エンコーディングの指定は次の様に行います。


open FILE, '>:encoding(UFF-8)', $filename;


モードに続けて「 :encoding(文字コード) 」を指定しています。これで、出力先のファイルには、指定された文字コードで値が書き込まれます。

次の様に省略記法も用意されています。


open FILE, '>:utf8', $filename;


ただし、Perl は指定されたエンコーディングの確認はしませんので、該当するファイルの文字コードは予め確認しておく必要があります。

この話の詳細は perldoc - perluniintro あたりを参照してください。

0x44 -> 0x45 へ



Perl で利用出来るエンコードリストは、シェル上で以下のワンライナーを実行することで確認出来ます。


perl -MEncode -le "print for Encode->encodings(':all')"


また、Windows と Unix 系のオペレーティングシステム間の改行文字の差異を調整してくれる「 :crlf 」という特殊な設定もある様です。

文字コード関係は奥が不快、もとい、深いので、徐々に学習していきます。


参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。

目次 - Perl Index





















同じカテゴリー(Perl)の記事
 Perl mp2 翻訳 Web コンテンツ圧縮の FAQ (d228) (2023-10-11 23:49)
 Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227) (2023-05-26 15:41)
 Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226) (2023-05-19 17:05)
 Perl mp2 翻訳 テンプレートシステムの選択 (d225) (2022-08-15 22:23)
 Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224) (2022-06-15 20:43)
 Perl mp2 翻訳 チュートリアル (d223) (2022-06-15 20:42)
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

Llama
リャマ
TI-DA
てぃーだブログ
プロフィール
セラ (perlackline)
セラ (perlackline)
QRコード
QRCODE
オーナーへメッセージ

PAGE TOP ▲