archives/10/03/04/111325.html のちょっとした応用編としてブログにしようと思ったけど面倒すぎなので中止orz
リファレンスの利便性を強調するには、もっとも現実的な問題を例に出すと理解しやすいのではないかと思います。そこで、RSSの処理を考えたいと思います。ここでは簡略化するためにRSSモドキにしています。
次のようなデータをPerlのデータ構造に変換することを想定します。itemが複数あり、その中にはtitle, link, description, creator, dateが格納されています。
>||
<item>
<title>Finance-Bank-Schwab-1.16</title>
<link>~mgrimes/Finance-Bank-Schwab-1.16/</link>
<description>Check your Charles Schwab accounts from Perl </description>
<creator>Mark Grimes</creator>
<date>2010-03-04T13:49+00:00</date>
</item>
<item>
<title>POE-Component-CPANIDX-0.04</title>
<link>~bingos/POE-Component-CPANIDX-0.04/</link>
<description>A POE mechanism for querying the CPANIDX </description>
<creator>Chris Williams</creator>
<date>2010-03-04T13:29+00:00</date>
</item>
<item>
<title>CPAN-Mini-1.100630</title>
<link>~rjbs/CPAN-Mini-1.100630/</link>
<description>create a minimal mirror of CPAN </description>
<creator>Ricardo Signes</creator>
<date>2010-03-04T12:58+00:00</date>
</item>
<item>
<title>Sledge-Config-YAML-0.08</title>
<link>~mikihoshi/Sledge-Config-YAML-0.08/</link>
<description>The configuration file of Sledge can be written by using YAML. </description>
<creator>KAN Fushihara</creator>
<date>2010-03-04T12:41+00:00</date>
</item>
<item>
<title>Alien-ElasticSearch-0.06</title>
<link>~drtech/Alien-ElasticSearch-0.06/</link>
<description>Downloads, builds and installs ElasticSearch from github </description>
<creator>Clinton Gormley</creator>
<date>2010-03-04T12:34+00:00</date>
</item>
<item>
<title>Search-GIN-0.04</title>
<link>~xsawyerx/Search-GIN-0.04/</link>
<description>Generalized Inverted Indexing </description>
<creator>Sawyer X</creator>
<date>2010-03-04T12:26+00:00</date>
</item>
||<
これをリファレンス無しで書くとすれば、@title, @link, @description, @creator, @dateのようにそれぞれ配列を作り、次のように格納していくことになります。
>|perl|
my @title = q(
Finance-Bank-Schwab-1.16
POE-Component-CPANIDX-0.04
CPAN-Mini-1.100630
Sledge-Config-YAML-0.08
Alien-ElasticSearch-0.06
Search-GIN-0.04
);
my @link = q(
~mgrimes/Finance-Bank-Schwab-1.16/
~bingos/POE-Component-CPANIDX-0.04/
~rjbs/CPAN-Mini-1.100630/
~mikihoshi/Sledge-Config-YAML-0.08/
~drtech/Alien-ElasticSearch-0.06/
~xsawyerx/Search-GIN-0.04/
);
# 以下、同様に作っていく
||<
それぞれのデータを扱うには次のようなループを~
>||
# code
||<
ただ、これだと次のような問題点が~
・問題1
・問題2
・問題3
################# もう書くのつかれたお・・・
リファレンスありならこんな感じの構造
>|perl|
my $items = [
{},
{},
{},
{},
{},
{}
];
||<
それぞれのデータを扱うには次のようなループを~
>||
# code
||<
ね、リファレンス使ったほうが楽チンでしょ?
実際のRSSを持ってきてパースしてみる
#### 省略><