[ファイル]の検索結果


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";
}
[2235] Posted by kagahiro at 2010/08/19 20:08:36
0 point | Link (1) | Trackback (0) | Comment (0)

<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;
[2231] Posted by kagahiro at 2010/08/18 20:59:26
1 point | Link (1) | Trackback (0) | Comment (1)

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;
[2230] Posted by kagahiro at 2010/08/18 20:57:05
0 point | Link (1) | Trackback (0) | Comment (0)

HTML::Templateは、シンプルで高速なループ構造を表現するのに適したテンプレートエンジン。テンプレートファイルでは変数を入れるために以下のタグが使用できる。<TMPL_VAR> <TMPL_LOOP> <TMPL_INCL...
[2227] Posted by kagahiro at 2010/08/17 17:17:19
0 point | Link (3) | Trackback (0) | Comment (0)

Template Toolkit (TT)は、HTML::Templateなど他のテンプレートと比較してより汎用性の高い処理をすることが可能なテンプレートエンジン。出力をサブルーチンに渡したりファイルに出力することもできる。また、テンプ...
[2226] Posted by kagahiro at 2010/08/17 17:15:46
0 point | Link (1) | Trackback (0) | Comment (0)

必要なデータが入ったハードディスク(HDD)が突然壊れると困ってしまいますよね。しかし、壊れるときはいきなり壊れるのがハードディスクというものです。というわけで、いざというときに困らないように、壊れたハード...
[2206] Posted by buzei at 2010/08/11 20:04:48
0 point | Link (1) | Trackback (0) | Comment (0)

59bbs 3.1.6 をリリースしました。主な変更部分は、携帯向けのページが表示されていなかった不具合の修正や携帯からのコメント投稿ができなかった不具合の修正など、携帯向けの機能に関連した不具合の修正です。変更...
[2203] Posted by buzei at 2010/08/11 16:35:34
0 point | Link (2) | Trackback (0) | Comment (0)

単にテキストファイル等の文字エンコードを変換するのであれば、iconvコマンドを使用して変換すれば良いのですが、ときにはプログラム内部で取得した文字列の文字エンコード変換したい場合もあります。以下のプログ...
[2182] Posted by kagahiro at 2010/08/06 00:29:29
0 point | Link (1) | Trackback (0) | Comment (0)

Windowsの全バージョンに、USB メモリを差し込んだり、ブラウザ経由で WebDAV を表示したり、Microsoft Office などの埋め込みショートカットに対応したファイルを表示するだけで感染してしまう可能性のある危険な脆...
[2153] Posted by buzei at 2010/07/26 17:08:08
0 point | Link (1) | Trackback (0) | Comment (0)

無料で配布している掲示板CGI(59bbsとは別の簡易掲示板CGIバージョンアップしました。HTML::Templateを使用してUIの部分をできるだけプログラムから取り除き、テンプレートファイルで記述するように変更しました。...
[2150] Posted by buzei at 2010/07/25 18:08:12
0 point | Link (1) | Trackback (0) | Comment (0)

|< 先頭へ  < 前へ  1 2 3 4 5  次へ >


アクセスランキング

今日のアクセスランキング(上位10件)

  1. 掲示板やチャットなどのフリーPHPスクリプトの配布サイト (14 PV)
  2. 掲示板フリーソフト - 無料で利用できる掲示板CGI (6 PV)
  3. プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (5 PV)
  4. [Twitter]ツイッター検索のまとめ (5 PV)
  5. 自称「紀州のドンファン」和歌山の資産家「野崎幸助」氏が覚せい剤で不審死、警察は殺人容疑で捜査 (4 PV)
  6. 三菱自動車燃費データ偽装の補償金は1台たったの10万円 (3 PV)
  7. 【最近の有効求人倍率の低下について。全国平均0.84倍】 (3 PV)
  8. 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (3 PV)
  9. カラムーチョ8倍が「辛くて食えねえ」とネットで話題に (2 PV)
  10. ハニートラップとは (2 PV)

今月のアクセスランキング(上位10件)

  1. 2ちゃんねる(2ch)検索 掲示板 - スレタイ、過去ログ、全文検索 (64 PV)
  2. 掲示板やチャットなどのフリーPHPスクリプトの配布サイト (49 PV)
  3. 掲示板フリーソフト - 無料で利用できる掲示板CGI (36 PV)
  4. [Twitter]ツイッター検索のまとめ (24 PV)
  5. 浜崎あゆみ(はまさきあゆみ、ayumi hamasaki) (23 PV)
  6. 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (23 PV)
  7. [掲示板]2ちゃんねる(2ch.net) (23 PV)
  8. プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (21 PV)
  9. 2ちゃんねるは不法行為で乗っ取られていた、管理人のひろゆきが声明を発表 (20 PV)
  10. 2ちゃんねるまとめブログ「明日もやられやく」の管理人「小林浩忠容疑者」がウイルス作成罪で逮捕 (20 PV)

アクセス統計

ディレクトリ

関連サイト