2013年06月10日の日記、Perl - リファレンスのみの2次元配列;
Perlのお勉強。
今日は、配列。
配列でも、リファレンスを使った「現場的な」配列。


#! /usr/bin/perl

use strict;
use warnings;

my $array = [
undef,
['Jan', 1],
['Feb', 2],
['Mar', 3],
['Apr', 4],
['May', 5],
['Jun', 6],
['Jul', 7],
];

print "no syntax sugar : ${$$array[4]}[0] is ${$$array[4]}[1]\n";
print " syntax sugar 1: $array->[4]->[0] is $array->[4]->[1]\n";
print " syntax sugar 2: $array->[4][0] is $array->[4][1]\n";

上記のコードのprint文は3つとも同じ変数展開をします。

no syntax sugar : Apr is 4
syntax sugar 1: Apr is 4
syntax sugar 2: Apr is 4

なんとも奇怪です。
3種類も書き方があるとは困ります。(もしかしてもっとある?)
たぶん読むのに困ります。
個人的には2番目の書き方が一番明瞭かと思います。

でもですねー、最初は -> 記法のデリファレンスのシンタックスシュガーは好きではなかったです。
原始的なデリファレンスの方が分かりやすいと思ったです。
でも、それは1次元配列まででした;
リファレンスのみの2次元配列は、原始的なデリファレンスでは、まだちょっと理解できません。
まだブレース(波括弧({}))の役割が分かってないなあ。

${${${$array[4]}}[0]}

もっともっとデリファレンスして、これでもいけると思ったのだがエラーになる。
わからん。


ところで、Vimの使い心地がいいです!
普通のエディタを操作している時も、Vimのコマンドを打ってしまいます;
それはそれで問題ですが。。。
[PR]
by redchant | 2013-06-10 23:17 | 日記
<< 2013年06月14日の日記、... 2013年06月09日の日記、... >>