― Web Technology and Life ―

Perlのtieをちょっと使ってみた

2011-12-03
ちょっとやりたいことがあってググったらtieでできることがわかって、初めてtieを使ったので感動を共有です。

Tie::IxHash

こんな感じで、コードとかconfigにフォームのデータを入れて見通しよく一括管理したいという場合、できればハッシュにいれた順に取り出したいのですが、Tie::IxHash」でそれができます。ネストされたハッシュデータとか使い方はこちらを参照してください 。→ハッシュのキーを挿入(追加)した順番通りに取り出す

use strict;
use warnings;
use utf8;
use Amon2::Lite;
use Tie::IxHash;

get '/' => sub {
    tie my %educational, 'Tie::IxHash';

    %educational = (
        1 => '高校卒業',
        2 => '専門学校卒業',
        3 => '二年制大学・高専卒業',
        4 => '四年制大学卒業',
        5 => '大学院卒業',
    );

    $_[0]->render('index.tt',+{ educational => \%educational });
};

__PACKAGE__->to_app();

__DATA__
@@ index.tt
<!doctype html>
<html>
<head><title>お申込みフォーム</title></head>
<body>
<h1>お申込みフォーム</h1>
<form method="post" action="">
    <p>学歴:
    <select name="educational">
        [% FOR num IN educational.keys() %]
            <option value="[% num %]">[% educational.$num %]</option>
        [% END %]
    </select>
    </p>
    <p><input type="submit" value="送信"></p>
</form>
</body>
</html>

Array::Unique

List::AllUtils qw/uniq/とかハッシュとか使ってもいいですけど、とりあえずそういうの気にせずガシガシ入れたいっていうときに良い感じに動いてくれますねー。

#!/usr/bin/env perl
use strict;
use warnings;
use Array::Unique;

tie my @urls, 'Array::Unique';

my @list_urls = qw(
    http://example.com/
    http://example.com/
    http://example.com/
    http://example.com/
    http://example.com/a.html
    http://example.com/a.html
    http://example.com/a.html
);

@urls = @list_urls;

warn $_ for @urls;

感想

Tie::IxHashとか不都合はないですけど、Array::Uniqueとかtieにされていることを気づかずに使って不都合が出てくる時がありそうだから、使う場所は限定的、かつ、わかりやすいようにしなくてはいけませんね。他に良さげなtieのハックを探していきたい今日この頃です。

Perl update_at : 2011-12-03T15:58:19
hirobanex.netの更新情報の取得
 RSSリーダーで購読する   
blog comments powered by Disqus