[ファイル]の検索結果


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. 2NN (2ch News Navigator) (4 PV)
  2. プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (3 PV)
  3. 5ちゃんねる(5ch.net)の検索(旧2ちゃんねるの検索) (1 PV)
  4. ピーアーク三田は許せない 東京都港区 (1 PV)

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

  1. 2NN (2ch News Navigator) (318 PV)
  2. プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (95 PV)
  3. 小林興起元衆議院議員がタレントの杉本彩さんにキスを迫る (61 PV)
  4. 2ちゃんねる(2ch)検索 掲示板 - スレタイ、過去ログ、全文検索 (42 PV)
  5. 読売新聞「石井誠」記者変死事件 (20 PV)
  6. ログ速(ろぐそく、logsoku) - 過去ログ スレタイ検索 全文検索 (20 PV)
  7. 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (17 PV)
  8. PHP、MySQLで動くオープンソース掲示板ソフト (12 PV)
  9. 掲示板やチャットなどのフリーPHPスクリプトの配布サイト (11 PV)
  10. 掲示板フリーソフト - 無料で利用できる掲示板CGI (11 PV)

アクセス統計

ディレクトリ

関連サイト