ページ

2012年1月31日火曜日

perl template::toolkitを使ってみた。


仮定条件
name.txtとしてファイルで提出する必要がある。
そこで、末尾のm1_member.csvを利用して、
人数分のname.txtを生成するプログラムを作成しなさい。
・申し込みフォーマット(template.txt)
—————————————-
○×研究会 申し込み
氏名  :
フリガナ:
所属  :
e-mail :
—————————————-
・yottan.txtの作成例
—————————————-
○×研究会 申し込み
氏名  :その名はよったん
フリガナ:ソノナハヨッタン
所属  :よったん大学
e-mail :yottan@yottan.com
—————————————-
・m1_member.csv(氏名,フリガナ,e-mail,name)
“その名はよったん,ソノナハヨッタン,yottan@is.naist.jp,yottan”
“あだ名はよっちん,アダナハヨッチン,yocchin@is.naist.jp,yocchin”
環境:
windows7
m1_member.csvはutf8で書かれています。
使ったファイルは全部同じディレクトリに入ってます。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!usr/bin/perl
use strict;
use warnings;
use Template;
use Encode;
use open IN => ":utf8";
 
my $file = "m1_member2.csv" ; # 読み込みたいファイル名
open(my $fh, "<", $file)
or die "Cannot open $file: $!";
while( my $line = readline $fh ){
# readline関数で、一行読み込む。
my @s =split( /,/, $line);
my $name =$s[0];
my $kana =$s[1];
my $shozoku = "よったん大学";
$shozoku =decode('utf8',$shozoku);
my $mail = $s[2];
my $romaji = $s[3];
chomp $romaji; # chomp関数で、csv形式の改行を取り除く
#作成するファイルネーム***.txtの作成
my $filename = $romaji.".txt";
open(OUTPUTFILE, ">>$filename");
my $vars = {
name => $name,
kana => $kana,
shozoku => $shozoku,
mail => $mail,
};
#テンプレート'template.txtの格納場所・文字コードの指定など'
my $config = {
UNICODE => 1, #これでテンプレファイルが
ENCODING => 'utf-8', #utf-8フラグ付きとなる。
# テンプレート(template.txt)の置いている場所
INCLUDE_PATH => 'C:\Perl\program',
};
my $tt = Template->new($config)|| die $Template::ERROR, "\n";
$tt->process('template.txt',$vars,$filename) || die $tt->error(),"\n";
close( OUTPUTFILE );
}
実行結果
○×研究会
氏名:その名はよったん
フリガナ:ソノナハヨッタン
所属:よったん大学
メール:yottan@yottan.com
参考ページ
template:toolkit全般について↓
のsynopsysのところ
文字コードの扱い↓

0 件のコメント:

コメントを投稿