[ファイル]の検索結果
C言語やC++なら2次元配列といっても配列の階層を増やすだけなので、わりと簡単に理解できるのですが、 Perlはそこでリファレンスという、いまいちわかりにくいものが出てくるのでちょっと面倒です。
とはいっても、2次元配列程度ならそんなに複雑なコードになるというわけでもありません。
以下は、numdata.txtというコンマで区切られたテキストファイルのデータを、2次元配列に格納してからレコードごとに標準出力に出力するPerlのサンプルプログラムです。
--- numdata.txt --- 1,2,3,4 11,12,13,14 21,22,23,24 31,32,33,34 41,42,43,44 --- sample.pl --- #!/usr/bin/perl use strict; use warnings; #use Data::Dumper; my @list; open my $infh, '<', "numdata.txt"; while (my $rec = <$infh>) { chomp $rec; if ($rec ne '') { push @list, [split(/,/, $rec)]; } } close $infh; #print Dumper(@list); foreach my $item (@list) { # print Dumper($item); my ($a, $b, $c, $d) = @{$item}; print "$a, $b, $c, $d\n"; }
<TMPL_LOOP>タグはセクションを区切り、名前をつけることができます。この名前つきループの内側に<TMPL_VAR>タグを置き、プログラムでパラメータに代入するハッシュ・リファレンスの param() にリスト(配列リファレンス)を渡すと、リスト分の出力が繰り返されます。
以下は、<TMPL_LOOP>タグの使い方を示すサンプルプログラムです。サンプルプログラムでは、コンマで区切られたデータファイルを読み込んでリストを作成し、それをパラメータに渡してテーブルを表示しています。また、<TMPL_IF>タグ、<TMPL_ELSE>タグを使用してデータがない場合は、テーブルが出力されないようにしています。
--- データファイル(userdata.txt)
kagahiro,kitaakita,kagahiro3@59log.com,011678901 admin,tokyo,webmaster10@59log.com,011778901 buzei,kawasaki,support2@59bbs.org,041758901
--- テンプレートファイル(tmplloop.tmpl)
<html> <head> <title>HTML::Templateのサンプルプログラム LOOP</title> </head> <body> <h1>HTML::Templateのサンプルプログラム LOOP</h1> <TMPL_IF NAME=DATA_NUM> <table> <tr> <td>User Name</td> <td>Address</td> <td>Email</td> <td>Tel</td> </tr> <TMPL_LOOP NAME=USER_INFO> <tr> <td><TMPL_VAR NAME=USERNAME></td> <td><TMPL_VAR NAME=ADDRESS></td> <td><TMPL_VAR NAME=EMAIL></td> <td><TMPL_VAR NAME=TEL></td> </tr> </TMPL_LOOP> </table> <TMPL_ELSE> No data </TMPL_IF> </body> </html>
--- CGI(tmplloop.cgi)
#!/usr/bin/perl use strict; use warnings; use HTML::Template; my $template = HTML::Template->new(filename => 'tmplloop.tmpl'); my @loop_data = (); open my $infh, '<', "userdata.txt"; while (my $rec = <$infh>) { chomp $rec; if ($rec ne '') { my %row_data; my ($username, $address, $email, $tel) = split(/,/, $rec); $row_data{USERNAME} = $username; $row_data{ADDRESS} = $address; $row_data{EMAIL} = $email; $row_data{TEL} = $tel; push @loop_data, \%row_data; } } close $infh; $template->param(USER_INFO => \@loop_data); $template->param(DATA_NUM => scalar(@loop_data)); print "Content-Type: text/html; charset=utf-8\n\n"; print $template->output;
HTML::Templateの<TMPL_VAR>タグは、プログラムでパラメータに値を設定すると、タグの部分がパラメータで設定された文字列で置き換えられるという簡単なものです。
以下は、<TMPL_VAR>タグの使い方を示す単純なサンプルプログラムです。
--- テンプレートファイル(tmplvar.tmpl)
<html> <head> <title>HTML::Templateのサンプルプログラム VAR</title> </head> <body> <h1>HTML::Templateのサンプルプログラム VAR</h1> <p> My Name is <TMPL_VAR NAME=NAME> <br /> My IP Address is <TMPL_VAR NAME=IPADDR> <br /> </p> </body> </html>
--- CGI(tmplvar.cgi)
#!/usr/bin/perl use strict; use warnings; use HTML::Template; my $template = HTML::Template->new(filename => 'tmplvar.tmpl'); $template->param(NAME => 'Yamato, Taro'); $template->param(IPADDR => $ENV{'REMOTE_ADDR'}); print "Content-Type: text/html; charset=utf-8\n\n"; print $template->output;
HTML::Templateは、シンプルで高速なループ構造を表現するのに適したテンプレートエンジン。テンプレートファイルでは変数を入れるために以下のタグが使用できる。<TMPL_VAR> <TMPL_LOOP> <TMPL_INCL...
Template Toolkit (TT)は、HTML::Templateなど他のテンプレートと比較してより汎用性の高い処理をすることが可能なテンプレートエンジン。出力をサブルーチンに渡したりファイルに出力することもできる。また、テンプ...
必要なデータが入ったハードディスク(HDD)が突然壊れると困ってしまいますよね。しかし、壊れるときはいきなり壊れるのがハードディスクというものです。というわけで、いざというときに困らないように、壊れたハード...
59bbs 3.1.6 をリリースしました。主な変更部分は、携帯向けのページが表示されていなかった不具合の修正や携帯からのコメント投稿ができなかった不具合の修正など、携帯向けの機能に関連した不具合の修正です。変更...
単にテキストファイル等の文字エンコードを変換するのであれば、iconvコマンドを使用して変換すれば良いのですが、ときにはプログラム内部で取得した文字列の文字エンコードを変換したい場合もあります。以下のプログ...
Windowsの全バージョンに、USB メモリを差し込んだり、ブラウザ経由で WebDAV を表示したり、Microsoft Office などの埋め込みショートカットに対応したファイルを表示するだけで感染してしまう可能性のある危険な脆...
無料で配布している掲示板CGI(59bbsとは別の簡易掲示板CGIをバージョンアップしました。HTML::Templateを使用してUIの部分をできるだけプログラムから取り除き、テンプレートファイルで記述するように変更しました。...
アクセスランキング
今日のアクセスランキング(上位10件)
- 2NN (2ch News Navigator) (5 PV)
- プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (4 PV)
- 5ちゃんねる(5ch.net)の検索(旧2ちゃんねるの検索) (1 PV)
- ピーアーク三田は許せない 東京都港区 (1 PV)
- 生保レディの枕営業を暴露した「マツコの日本ボカシ話」番組休止へ、生保会社からクレームあった (1 PV)
- 「X JAPAN」のTOSHIさんが自己破産 (1 PV)
今月のアクセスランキング(上位10件)
- 2NN (2ch News Navigator) (319 PV)
- プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (96 PV)
- 小林興起元衆議院議員がタレントの杉本彩さんにキスを迫る (61 PV)
- 2ちゃんねる(2ch)検索 掲示板 - スレタイ、過去ログ、全文検索 (42 PV)
- 読売新聞「石井誠」記者変死事件 (20 PV)
- ログ速(ろぐそく、logsoku) - 過去ログ スレタイ検索 全文検索 (20 PV)
- 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (17 PV)
- PHP、MySQLで動くオープンソース掲示板ソフト (12 PV)
- 掲示板やチャットなどのフリーPHPスクリプトの配布サイト (11 PV)
- 掲示板フリーソフト - 無料で利用できる掲示板CGI (11 PV)
アクセス統計
ディレクトリ
- 59bbs.org - 掲示板
- Amalink - 画像付きamazon商品リンク作成ツール
- Mailform Std - オープンソースライセンス(GPLv2)のメールフォームCGI(Perl)
- ThreadPlus - オープンソースライセンスの(GPLv2)掲示板CGI(Perl)
- 2ちゃんねる掲示板検索
関連サイト
- 語句ログ - オープンソースブログソフト59Trackerを利用した情報共有ブログ
- 株価と為替レート(FX)の掲示板
- CommentPP - オープンソース掲示板システム(PHP/MySQL)のダウンロード
- BBS10 - CommentPP を利用したインターネット掲示板