[Perl][HTML::Template]<TMPL_LOOP>タグのサンプルプログラム

<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;
[1975] Posted by kagahiro at 2010/07/22 17:36:36
オープン | 0 point | Link (4) | Trackback (0) | Comment (0)

キーワード

Perl HTML Template サンプルプログラム 

ジャパンのホームページ


[Perl][HTML::Template]<TMPL_LOOP>タグのサンプルプログラム 関連リンク

HTML::Template
HTML::Templateは、シンプルで高速なループ構造を表現するのに適したテンプレートエンジン。テンプレートファイルでは変数を入れるために以下のタグが使用できる。<TMPL_VAR> <TMPL_LOOP> <TMPL_INCL...
[Perl][HTML::Template]<TMPL_VAR>タグのサンプルプログラム
HTML::Templateタグは、プログラムでパラメータに値を設定すると、タグの部分がパラメータで設定された文字列で置き換えられるという簡単なものです。以下は、タグ...
テンプレートエンジン
テンプレートエンジンとは、テンプレートと呼ばれるHTMLページのひな形をプログラムからデータを渡し合成した結果をHTMLページとして出力するためのライブラリのこと。テンプレートエンジンを利用...
[Perl]2次元配列のサンプルプログラム
C言語やC++なら2次元配列といっても配列の階層を増やすだけなので、わりと簡単に理解できるのですが、Perlはそこでリファレンスという、いまいちわかりにくいものが出てくるのでちょっと面倒...

[Perl][HTML::Template]<TMPL_LOOP>タグのサンプルプログラム トラックバック

トラックバックURL :


[Perl][HTML::Template]<TMPL_LOOP>タグのサンプルプログラムへのコメント


詳細の入力フィールドを表示する

おすすめ  (チェックしてコメントすると最新情報に掲載)
コメント :

< 前の投稿      次の投稿 >

アクセスランキング

今日のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (141 PV)
  2. Google News (グーグルニュース)日本版 (15 PV)
  3. [将棋]ユーチューバーのクロノさんが将棋ウォーズ運営からアカウント停止の警告を受ける #ソフト指し #複垢 #アカBAN (12 PV)
  4. SQLのSELECT文でn件目からm件目までのレコードを取得する方法(Oracle、SQL Server、MySQL、PostgreSQL) (9 PV)
  5. 最新のGoogle News(グーグルニュース)日本版のRSSが取得できるURL (9 PV)
  6. ウェブページを1回だけリロード(再表示)する方法 (6 PV)
  7. [gcc]iconvで文字エンコードを変換するサンプルプログラム (6 PV)
  8. 将棋ウォーズPCブラウザ版がchrome、Firefox、edgeなどに対応 (4 PV)
  9. Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (3 PV)
  10. MySQLのUPDATE文でLIMIT句を使用して上位3件のレコードを更新する (3 PV)

今月のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (2802 PV)
  2. Google News (グーグルニュース)日本版 (396 PV)
  3. Google Finance(グーグルファイナンス)日本版が表示されるようになってますが・・・ (215 PV)
  4. [将棋]ユーチューバーのクロノさんが将棋ウォーズ運営からアカウント停止の警告を受ける #ソフト指し #複垢 #アカBAN (191 PV)
  5. Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (179 PV)
  6. ウェブページを1回だけリロード(再表示)する方法 (178 PV)
  7. [Perl]UTF-8でエンコードされた文字列の文字数を取得するコード (155 PV)
  8. [FX]レンジ相場向けリピート系EA「RepeatK(リピートケイ)」(使用期限:2020年12月31日まで)を無料配布 (153 PV)
  9. 最新のGoogle News(グーグルニュース)日本版のRSSが取得できるURL (143 PV)
  10. 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (121 PV)

アクセス統計

ディレクトリ

関連サイト