root/websites/perl-users.jp/ttroot/modern_introduction_perl/template-tt.html @ 16718

Revision 16718, 2.1 kB (checked in by tomi-ru, 5 years ago)

ENCODINGの件

Line 
1[% TAGS asp -%]
2<% WRAPPER modern_introduction_perl/wrapper.tt,
3    title => "Template-Toolkit - モダンなPerl入門",
4    last_modified => '$Date: 2008-05-22T09:21:23.154313Z $'
5-%>
6<%- USE Markdown -%><%- FILTER markdown -%>
7
8Template-Toolkit
9==============================================================================
10
11Template-Toolkit は perl の世界でもっともよく使われているテンプレートエンジンの一つです。
12
13### つかいかた
14
15    # hoge.pl
16    use strict;
17    use warnings;
18    use utf8;
19    use Template;
20   
21    my $tt = Template->new(
22        ENCODING => 'utf-8',  # utf-8で保存されたテンプレートファイルを utf8 flag つきでロードする
23    );
24    $tt->process('hoge.tt', { author => "アンディ" }, \my $out) or die $tt->error;
25   
26    binmode STDOUT, ':utf8'; # utf-8で出力するというオマジナイ
27    print $out;
28
29    # または
30    # use Encode;
31    # print Encode::encode('utf-8', $out);
32
33    # hoge.tt
34    わたしのなまえは [% author %] です。
35
36ね。かんたんでしょ。
37
38#### テンプレートファイルを utf-8 以外で記述したいのですが。。。
39
40    my $tt = Template->new(
41        ENCODING => 'euc-jp', # とか
42    );
43
44### Template::Provider::Encoding を使う方法
45
46    # hoge.pl
47    use strict;
48    use warnings;
49    use utf8;
50    use Template;
51    use Template::Provider::Encoding;
52
53    my $tt = Template->new(
54        LOAD_TEMPLATES => [ Template::Provider::Encoding->new ],
55    );
56    $tt->process('hoge.tt', { author => "アンディ" }, \my $out) or die $tt->error;
57   
58    binmode STDOUT, ':utf8'; # オマジナイ
59    print $out;
60
61    # hoge.tt
62    わたしのなまえは [% author %] です。
63
64#### テンプレートファイルを utf8 以外で記述したいのですが。。。
65
66    [% USE encoding 'cp932' %]
67
68のように書くとよい。Template::Provider::Encoding を使うとこのようにテンプレートごとにエンコーディングを変えられます。
69
70### 備考
71
72Template::Stash::ForceUTF8 は、BK なのでできるだけつかわないようにしたほうがよいでしょう。
73
74<%- END -%><%- END -%>
Note: See TracBrowser for help on using the browser.