<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ja">
<title>Linuxで自宅サーバ構築・管理: KSKNET</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/" />
<modified>2008-03-23T14:16:37Z</modified>
<tagline></tagline>
<id>tag:www.ksknet.net,2008://1</id>
<generator url="http://www.movabletype.org/" version="3.11-ja">Movable Type</generator>
<copyright>Copyright (c) 2008, keisuke</copyright>
<entry>
<title>Class::Accessor - accessorの自動作成</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/perl/classaccessor_a.html" />
<modified>2008-03-23T14:16:37Z</modified>
<issued>2008-03-23T14:12:09Z</issued>
<id>tag:www.ksknet.net,2008://1.831</id>
<created>2008-03-23T14:12:09Z</created>
<summary type="text/plain">Class::Accessorを使えばnew constructerやaccessorを自動的に作成してくれる。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Perl</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[Class::Accessorを使えばnew constructerやaccessorを自動的に作成してくれる。<br />
<br />
<pre class="terminal">      1 #!/usr/bin/perl
      2
      3 { package Employee;
      4 use base qw(Class::Accessor);
      5 __PACKAGE__->mk_accessors(qw(name role));
      6 }
      7
      8 { package main;
      9 my $employee = Employee->new({ name => 'Hoge' } );
     10 $employee->{role} = 'Hage';
     11 print $employee->{name} . "\n";
     12 print $employee->{role} . "\n";
     13 }</pre>

]]>

</content>
</entry>
<entry>
<title>Module::Starter::PBPによるモジュールの作成</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/perl/modulestarterpb.html" />
<modified>2008-03-22T16:20:04Z</modified>
<issued>2008-03-22T15:15:31Z</issued>
<id>tag:www.ksknet.net,2008://1.830</id>
<created>2008-03-22T15:15:31Z</created>
<summary type="text/plain">perlのモジュールの雛形を作るコマンドにh2xsというコマンドがありますが、最近ではModule::Starterを使うのが主流のようです。また、Module::Starter::PBPではPerl Best Practicesが推奨するテンプレートにてモジュールが作成されます。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Perl</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[perlのモジュールの雛形を作るコマンドに<a href="http://www.ksknet.net/perl/h2xs_perl.html">h2xs</a>というコマンドがありますが、最近ではModule::Starterを使うのが主流のようです。また、Module::Starter::PBPではPerl Best Practicesが推奨するテンプレートにてモジュールが作成されます。<br />
<br />
まずはCPANよりインストール。<br />
<br />
<pre class="terminal">$ cpan -i Module::Starter::PBP</pre>
<br />
次に初期セットアップ<br />
<pre class="terminal">$ perl -MModule::Starter::PBP=setup
Creating /home/hogehoge/.module-starter/PBP...done.
Creating /home/hogehoge/.module-starter/PBP/t...done.
Creating /home/hogehoge/.module-starter/config...
Please enter your full name: HogeHoge HogeHoge
Please enter an email address: devnull@ksknet.net
Writing /home/hogehoge/.module-starter/config...
done.
Installing templates...
        /home/hogehoge/.module-starter/PBP/Build.PL...done
        /home/hogehoge/.module-starter/PBP/Makefile.PL...done
        /home/hogehoge/.module-starter/PBP/README...done
        /home/hogehoge/.module-starter/PBP/Changes...done
        /home/hogehoge/.module-starter/PBP/Module.pm...done
        /home/hogehoge/.module-starter/PBP/t/pod-coverage.t...done
        /home/hogehoge/.module-starter/PBP/t/pod.t...done
        /home/hogehoge/.module-starter/PBP/t/perlcritic.t...done
Installation complete.</pre>
<br />
$HOME/.module-starter内にconfigとPBPのテンプレートが入ります。モジュールを作成するにはmodule-starterコマンドを使用します。<br />
<br />
<pre class="terminal">$ module-starter --module=My::ModuleName</pre>
<br />
これでMy-ModuleNameフォルダ以下が作成されます。ディレクトリを移動して、Buildしてみます。<br />
<br />
<pre class="terminal">$ cd My-ModuleName
$ perl Build.PL
Checking whether your kit is complete...
Looks good

Checking prerequisites...
Looks good

Creating new 'Build' script for 'My-ModuleName' version '0.0.3'
</pre>
<br />
これでBuildファイルが作成されます。続いてperl Build<br />
<br />
<pre class="terminal">$ perl Build
Copying lib/My/ModuleName.pm -> blib/lib/My/ModuleName.pm
Manifying blib/lib/My/ModuleName.pm -> blib/libdoc/My::ModuleName.3pm
</pre>
<br />
t/フォルダ以下に必要なテストプログラムを書き、パッケージの実装をします。その後perl Build testで問題がないことを確認。<br />
<br />
<pre class="terminal">perl Build test</pre>
<br />
モジュールの依存性がある場合はBuild.PLのrequiresに追記。またMakefile.PLを以下のように書き換え。こうすればBuild.PLの内容と互換性のあるMakefile.PLが作成される。<br />
<br />
<pre class="terminal">use lib qw(lib);
use Module::Build::Compat;
Module::Build::Compat->run_build_pl(args => \@ARGV);
Module::Build::Compat->write_makefile(build_class => 'Module::Build');</pre>
<br />
実際に走らせてみる<br />
<pre class="terminal">$ perl Makefile.PL
$ make
$ make test</pre>
<br />
次にmanifest(配布されるファイルのTable of contents)の作成。MANIFESTに入れたくないものは作成されるMANIFEST.SKIPに記載すればよい。<br />
<br />
<div class="terminal">$ perl Build manifest</div>
<br />
# 最後にパッケージを作成。tar.gzファイルができあがります。<br />
<div class="terminal">$ perl Build dist</div>
<br />
[参考]
<a href="http://itpro.nikkeibp.co.jp/article/COLUMN/20071011/284280/?P=1&ST=develop">ITPro - Part1 正しいPerl/CGIの書き方 </a>]]>



</content>
</entry>
<entry>
<title>vim - 背景色に合わせたカラー設定</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/vi/vim.html" />
<modified>2008-03-22T13:14:14Z</modified>
<issued>2008-03-22T13:05:39Z</issued>
<id>tag:www.ksknet.net,2008://1.829</id>
<created>2008-03-22T13:05:39Z</created>
<summary type="text/plain">:set backgroundにて背景色に合わせた色を自動的に設定できます。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>viエディター</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>:set backgroundにて背景色に合わせた色を自動的に設定できます。</p>

<p><br />
[背景色が暗い時]<br />
<pre class="terminal">:set background=dark</pre></p>

<p><br />
[背景色が明るい時]<br />
<pre class="terminal">:set background=light</pre></p>

<p>また以下のようにすれば、あらかじめ用意されたカラースキームを使用することができる。</p>

<pre class="terminal">:colorscheme evening</pre>

<p>カラースキームは通常/usr/share/vim 以下にある。</p>

<pre class="terminal">ls /usr/share/vim/vim63/colors/
blue.vim      default.vim  desert.vim   evening.vim  morning.vim  pablo.vim      README.txt  shine.vim  zellner.vim
darkblue.vim  delek.vim    elflord.vim  koehler.vim  murphy.vim   peachpuff.vim  ron.vim     torte.vim
</pre>
]]>

</content>
</entry>
<entry>
<title>perlの特殊リテラル</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/perl/perl_9.html" />
<modified>2008-03-20T15:44:15Z</modified>
<issued>2008-03-20T15:33:55Z</issued>
<id>tag:www.ksknet.net,2008://1.828</id>
<created>2008-03-20T15:33:55Z</created>
<summary type="text/plain">perlには以下のような特殊リテラルがある。

__FILE__　現在のファイル名
__LINE__ 現在の行番号
__PACKAGE_　現在のパッケージ名

詳しくはperldocでperldata(Special Literals)を参照のこと。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Perl</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>perlには以下のような特殊リテラルがある。</p>

<p>__FILE__　現在のファイル名<br />
__LINE__ 現在の行番号<br />
__PACKAGE_　現在のパッケージ名</p>

<p>詳しくはperldocでperldata(Special Literals)を参照のこと。</p>]]>

</content>
</entry>
<entry>
<title>Firefoxでブックマークの保存先変更</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/cat14/firefox_1.html" />
<modified>2008-03-20T14:20:50Z</modified>
<issued>2008-03-20T14:13:39Z</issued>
<id>tag:www.ksknet.net,2008://1.827</id>
<created>2008-03-20T14:13:39Z</created>
<summary type="text/plain">Firefoxでブックマークファイルの保存先を変更するには、prefs.jsファイルと同じ場所にuser.jsファイルを作成し、以下の一行を追加すればよい。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>その他</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>Firefoxでブックマークファイルの保存先を変更するには、prefs.jsファイルと同じ場所にuser.jsファイルを作成し、以下の一行を追加すればよい。</p>

<pre>user_pref("browser.bookmarks.file", "E:\\Share\\bookmarks.html");</pre>

<p>[参考サイト]<br />
<a href="http://firefox.geckodev.org/index.php?%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB">プロファイル - Mozilla Firefox まとめサイト</a></p>]]>

</content>
</entry>
<entry>
<title>XMLRPC::Lite</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/perl/xmlrpclite.html" />
<modified>2007-10-21T12:14:04Z</modified>
<issued>2007-10-21T12:08:02Z</issued>
<id>tag:www.ksknet.net,2007://1.826</id>
<created>2007-10-21T12:08:02Z</created>
<summary type="text/plain">SOAP::Liteに含まれるXMLRPC::Liteの使い方。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Perl</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[Daemon server

<pre class="terminal">#!/usr/bin/perl

use XMLRPC::Transport::HTTP;

my $daemon = XMLRPC::Transport::HTTP::Daemon
	-> new (LocalPort => 8080)
	-> dispatch_to('KSKNET')
;
$daemon->handle;

package KSKNET;
sub hello {
	return "Hello World!\n";
}
</pre>


CGI server

<pre class="terminal">#!/usr/bin/perl


use XMLRPC::Transport::HTTP;

my $server = XMLRPC::Transport::HTTP::CGI->dispatch_to('KSKNET')->handle;

package KSKNET;

sub hello {
	return "Hello World!\n";
}
</pre>

Client

<pre class="terminal">
#! /usr/bin/perl

use strict;
use warnings;
use XMLRPC::Lite;

my $result = XMLRPC::Lite->proxy("http://localhost:8080/")->call("KSKNET.hello")->result;
print $result;
</pre>]]>

</content>
</entry>
<entry>
<title>HTTP::Request::Common</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/perl/httprequestcomm.html" />
<modified>2007-10-08T11:56:16Z</modified>
<issued>2007-10-08T11:35:17Z</issued>
<id>tag:www.ksknet.net,2007://1.825</id>
<created>2007-10-08T11:35:17Z</created>
<summary type="text/plain">HTTP::Request::Commonを使えば簡単にリクエストデータを生成することが可能。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Perl</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>HTTP::Request::Commonを使えば簡単にリクエストデータを生成することが可能。</p>

<p><br />
<div class="terminal">#!/usr/bin/perl</p>

<p><br />
use LWP::UserAgent;<br />
use HTTP::Request::Common;<br />
use strict;<br />
use warnings;</p>

<p><br />
my $url = 'http://webservices.amazon.co.jp/onca/xml';<br />
my $ua = new LWP::UserAgent;<br />
my $access_key = 'your_access_key';<br />
my $affiliate_tag = 'your_affiliate_tag';</p>

<p><br />
my $parameter = [<br />
    Service =&gt; 'AWSECommerceService',<br />
    Operation =&gt; 'ItemSearch',<br />
    SearchIndex =&gt; 'Books',<br />
    ResponseGroup =&gt; 'Medium',<br />
    Condition =&gt; 'All',<br />
    Availability =&gt; 'Available',<br />
    MerchantId =&gt; 'All',<br />
    AWSAccessKeyId =&gt; $access_key,<br />
    AssociateTag =&gt; $affiliate_tag,<br />
    Keywords =&gt; $ARGV[0],<br />
];</p>

<p>my $request = POST($url, $parameter);<br />
my $response = $ua-&gt;request($request);</p>

<p><br />
if ($response-&gt;is_success) {<br />
    print $response-&gt;content;<br />
}<br />
</div><br />
</p>]]>

</content>
</entry>
<entry>
<title>コンソールの設定</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/linux/post_182.html" />
<modified>2007-10-08T07:53:10Z</modified>
<issued>2007-10-08T07:41:14Z</issued>
<id>tag:www.ksknet.net,2007://1.824</id>
<created>2007-10-08T07:41:14Z</created>
<summary type="text/plain">Linuxでのコンソール設定方法。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Linux</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>Linuxでのコンソール設定方法。</p>

<p><br />
1. /etc/inittab を編集し、下記一行を追加<br />
<div class="terminal">s0:2345:respawn:/sbin/agetty -L /dev/ttyS0 9600 vt100</div></p>

<p><br />
2. initコマンドで設定を反映<br />
<div class="terminal">init q</div></p>

<p><br />
注意: コンソールにrootユーザからはログインできないので注意すること。これは/etc/securettyにttyS0が記載されていないことによるものです。</p>]]>

</content>
</entry>
<entry>
<title>標準入力の内容を標示しないようにする</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/perl/post_181.html" />
<modified>2007-06-24T13:58:29Z</modified>
<issued>2007-06-24T13:48:45Z</issued>
<id>tag:www.ksknet.net,2007://1.823</id>
<created>2007-06-24T13:48:45Z</created>
<summary type="text/plain">パスワードなどを入力させる場合、端末に内容を表示させないようにするにはsttyコマンドでechoを無向にすればよい。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Perl</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>パスワードなどを入力させる場合、端末に内容を表示させないようにするにはsttyコマンドでechoを無効にすればよい。</p>

<div class="terminal"><pre>
system("stty -echo");
print "Enter your password: ";
chomp($passwd = <STDIN>);
print "\n";
system("stty echo");
</pre></div>]]>

</content>
</entry>
<entry>
<title>SQL::Abstract</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/dbi/sqlabstract.html" />
<modified>2007-01-29T08:53:48Z</modified>
<issued>2007-01-29T08:47:40Z</issued>
<id>tag:www.ksknet.net,2007://1.822</id>
<created>2007-01-29T08:47:40Z</created>
<summary type="text/plain">SQL::AbstractはPerlのデータ構造からSQL文を自動で作成してくれるモジュールになります。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>DBI</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>SQL::AbstractはPerlのデータ構造からSQL文を自動で作成してくれるモジュールになります。</p>

<p><br />
[例 - INSERT文]<br />
<div class="terminal">use SQL::Abstract;</p>

<p>my $data = {<br />
	name =&gt; 'hoge',<br />
	value =&gt; 'hoge<br />
};</p>

<p>my $sql = SQL::Abstract-&gt;new;<br />
my($statement, @bind) = $sql-&gt;insert('table_name', $data);<br />
my $sth = $dbh-&gt;prepare($statement);<br />
$sth-&gt;execute(@bind) || warn $DBI::errstr;<br />
$sth-&gt;finish();</div></p>

<p><br />
select, update, delete時にWHERE句を入れる場合は以下のようにしてhash refにて値を渡してください。</p>

<div class="terminal">my ($statement, @bind) = $sql-&gt;delete( 'table_name', { id =&gt; 1111 } );</div>]]>

</content>
</entry>
<entry>
<title>postfix relayhost</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/postfix/postfix_relayho.html" />
<modified>2007-01-24T04:34:08Z</modified>
<issued>2007-01-24T03:37:03Z</issued>
<id>tag:www.ksknet.net,2007://1.821</id>
<created>2007-01-24T03:37:03Z</created>
<summary type="text/plain">ローカル宛以外のメールを別のサーバ経由にて送信する場合にはmain.cf内のrelayhostにて指定すればよい。メールサーバを複数台で運用している場合などはここでゲートウェイとなるメールサーバ名を記述します。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>postfix</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>ローカル宛以外のメールを別のサーバ経由にて送信する場合にはmain.cf内のrelayhostにて指定すればよい。メールサーバを複数台で運用している場合などはここでゲートウェイとなるメールサーバ名を記述します。</p>

<p><br />
[例]<br />
<div class="terminal">relayhost = [mailgw.ksknet.net]<br />
relayhost = [192.168.1.2]</div></p>

<p><br />
特定のホスト宛のメールのみ、別のメールサーバ経由で送る場合にはtransportを使用してください。</p>

<p><br />
[関連記事]<br />
<a href="http://www.ksknet.net/postfix/postfix_transpo.html">postfix - transport</a></p>

<p><br />
</p>]]>

</content>
</entry>
<entry>
<title>innerText</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/javascript/innertext.html" />
<modified>2007-01-22T03:30:06Z</modified>
<issued>2007-01-19T02:50:29Z</issued>
<id>tag:www.ksknet.net,2007://1.820</id>
<created>2007-01-19T02:50:29Z</created>
<summary type="text/plain">innerTextは指定したタグ間の内容を取得します。また値を設定することで、テキストを書き換えることが可能。innerTextはテキスト文として値を返すためにHTMLタグはそのまま表示されます。HTMLタグを有効にしたい場合にはinnerHTMLを使用してください。またFirefoxではinnerTextが使えないので、textContentを使用するか、innerHTMLにて代用すること。
</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>JavaScript</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>innerTextは指定したタグ間の内容を取得します。また値を設定することで、テキストを書き換えることが可能。innerTextはテキスト文として値を返すためにHTMLタグはそのまま表示されます。HTMLタグを有効にしたい場合にはinnerHTMLを使用してください。またFirefoxではinnerTextが使えないので、textContentを使用するか、innerHTMLにて代用すること。</p>

<p><br />
[例]<br />
&lt;div id=&quot;testResult&quot;&gt;Test結果&lt;/div&gt;</p>

<p><br />
var testResult = document.getElementById('testResult');<br />
alert(testResult);<br />
testResult.innerText = '書き換え';</p>]]>

</content>
</entry>
<entry>
<title>lastcomm - コマンドの実行履歴を参照</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/linuxjq/lastcomm.html" />
<modified>2006-12-25T10:31:17Z</modified>
<issued>2006-12-25T10:12:42Z</issued>
<id>tag:www.ksknet.net,2006://1.818</id>
<created>2006-12-25T10:12:42Z</created>
<summary type="text/plain">lastcommコマンドではhistoryコマンドよりも詳細なコマンド履歴を見ることができます。このコマンドはprocess accountingによって記録されたファイル 　(/var/account/acct)を参照するため、process accoutingがonになっていないと使用できません。
</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Linuxコマンド(J〜Q)</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>lastcommコマンドではhistoryコマンドよりも詳細なコマンド履歴を見ることができます。このコマンドはprocess accountingによって記録されたファイル 　(/var/account/acct)を参照するため、process accoutingがonになっていないと使用できません。またログがかなり誇大化するため、ロテート処理をきちんとすること。</p>

<p><br />
LinuxやFreeBSDでprocess accountingを有効にするにはそれぞれ以下のようにします。</p>

<p><br />
[Linux]<br />
<div class="terminal">/etc/rc.d/init.d/psacct start</div></p>

<p><br />
[FreeBSD]<br />
/etc/rc.conf に以下の一行を追加してから、/etc/rc.d/accounting startで起動。</p>

<p><br />
<div class="terminal">accounting_enable=&quot;YES&quot;<br />
/etc/rc.d/accounting start</div></p>]]>

</content>
</entry>
<entry>
<title>EncodeモジュールでのMIME Encode</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/perl/encodemime_enco.html" />
<modified>2006-12-15T09:59:30Z</modified>
<issued>2006-12-15T09:50:41Z</issued>
<id>tag:www.ksknet.net,2006://1.817</id>
<created>2006-12-15T09:50:41Z</created>
<summary type="text/plain">Encodeモジュールで文字コードの変換ができるが、MIMEエンコードをするには以下のようにすればよい。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Perl</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>Encodeモジュールで文字コードの変換ができるが、MIMEエンコードをするには以下のようにすればよい。</p>

<p><br />
<div class="terminal">use Encode;</p>

<p><br />
encode('MIME-Header-ISO_2022_JP', $subject)</div></p>

<p><br />
詳細はperldoc Encode::MIME::Headerを参照。</p>]]>

</content>
</entry>
<entry>
<title>Template::Toolkit</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/perl/templatetoolkit.html" />
<modified>2007-01-10T01:36:16Z</modified>
<issued>2006-12-15T02:04:13Z</issued>
<id>tag:www.ksknet.net,2006://1.816</id>
<created>2006-12-15T02:04:13Z</created>
<summary type="text/plain">Template::Toolkitは強力なテンプレート処理システムでHTML::TemplateやText::Templateなどといった他のテンプレート処理モジュールより汎用性の高い処理をすることが可能です。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Perl</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>Template::Toolkitは強力なテンプレート処理システムで<a href="http://www.ksknet.net/cgi/htmltemplate.html">HTML::Template</a>や<a href="http://www.ksknet.net/perl/texttemplate.html">Text::Template</a>などといった他のテンプレート処理モジュールより汎用性の高い処理をすることが可能です。Template::Toolkitではテンプレートファイル内の変数置換だけでなく、テンプレートの中でTT2言語と呼ばれる言語で簡単なプログラムを書いたり、DBIなどのプラグインを使用してデータベースへの接続をすることも可能です。ただしプログラムとテンプレートを分けるメリットがなくなるので、極力プログラム本体はテンプレート外で処理することをお勧めします。</p>

<p><br />
テンプレートファイル中の変数は[% %]内に記述します。</p>

<p><br />
[% domainname %]</p>

<p><br />
プログラム内からこのテンプレートファイルを読み込み変数を置換するには以下のようにします。</p>

<p><br />
<div class="terminal">use Template;</p>

<p><br />
my $tt = Template-&gt;new( { INCLUDE_PATH =&gt; '/var/www/html/template' } );<br />
my $vars = { domainname =&gt; 'ksknet.net' };<br />
$tt-&gt;process('template.txt', $vars ) || die $tt-&gt;error(), &quot;\n&quot;;</div></p>

<p><br />
$tt-&gt;processでは処理結果をSTDOUTに出力します。処理が成功すると1を返し、失敗するとundefを返します。そのため$tt-&gt;processの結果を変数に入れても1かundefしか返りません。結果を変数に入れるには以下のようにしてください。</p>

<div class="terminal">my $result;
$tt-&gt;process('template.txt', $vars, \$result ) || die $tt-&gt;error(), &quot;\n&quot;;
print $result;</div>

<p><br />
また出力をサブルーチンに渡したりファイルに出力することも可能です。</p>

<p><br />
[補足]<br />
ハッシュへのアクセスにはドット記法を用います。</p>

<p>[% customer.name %]</p>

<p><br />
[参考資料]<br />
<a href="http://search.cpan.org/~abw/Template-Toolkit-2.15/lib/Template/Manual.pod">Template::Manual</a></p>

<p><br />
</p>]]>

</content>
</entry>

</feed>