blog20100901

2013/08/20 - プログラミング言語 Perl にまつわる etc. - Perl monger
参考 : perldoc, perldoc.jp, search.cpan.org, perldoc.perl.org ...
「 初めての Perl 第 6 版 」(オライリー・ジャパン発行 ISBN978-4-87311-567-2) 」
「 続・初めての Perl 改訂版 」(オライリー・ジャパン発行 ISBN4-87311-305-9) 」
「 Effective Perl 第 2 版 」(翔泳社発行 ISBN978-4-7981-3981-4) 」 ... etc,.

Perl Perl_0

Perl 「 リストリテラル 」(0x1d)

Perl 「 リストリテラル 」(0x1d)

Perl について、復習を兼ねて断片的な情報を掲載して行く連載その 0x1d 回。

リストデータをプログラムコードに直接書く場合の リストリテラル と、範囲演算子 の マジカルインクリメント について。

リテラルの再確認



Perl リテラル (定数 !?) (0x07)」で確認した通り、リテラル とは「 直定数 」を意味します。「 リテラル = 直定数 」で「 コンスタント = 定数 」です。

Perl でのリテラル は次の様なものです。


# Perl

$char = "a"; # char は変数 a は文字列リテラル
$int = 1; # int は変数 1 は整数リテラル
$string = "Hello"; # string は変数 Hello は文字列リテラル


リストリテラル (List literal)



リストリテラルは、プログラムコード内にリストデータを書いたものです。リストリテラルは、値を「 , (カンマ)」 で区切って並べ、「 ( ) 」で囲みます。


(1, 2, 3) # 数値のリスト
("Foo", "Bar", "Baz") # 文字列のリスト
("Foo", 1.9) # 文字列と数値のリスト
(1..5) # 1 - 5 の 5 個の整数のリスト
("a".."z") # a - z の 26 個の英文字のリスト
($foo, $bar) # 変数 $foo と $bar の値のリスト
(0..$#array) # 配列 @array の添え字リスト
() # 空のリスト


4 行目のリストにある「 .. 」は範囲演算子 (Range operator) という二項演算子で、「 (1, 2, 3, 4, 5) 」とした場合と同じリストを作ります。

同じく 5 行目のリストでは「 ("a", "b", "c", "d", (中略) "y", "z") 」とした場合と同じリストを作ります。

7 行目は、配列の最後の添え字 (インデクス) にアクセスする記法を使って、配列 @array の添え字リストを作っています。

マジカルインクリメント



Perl では、「 ("a" .. "z") 」の様に文字をインクリメントする機能を、「 マジカルインクリメント 」と呼ぶそうです。

範囲演算子がリストコンテキスト (リストの文脈) で使われた場合には、このマジカルインクリメントの能力が発動します。同じ範囲演算子をスカラコンテキストで使うと、値の 真偽 を返す様になるとのことです。

マジカルインクリメントは、例えば次の様に動作をします。ここではインクリメントに演算子「 ++ 」を使い、「 '' (シングルクォーテーション)」を使って数値も文字列として扱っています。


print ++($foo = 'a'), "\n"; # b を表示
print ++($bar = 'az'), "\n"; # ba を表示
print ++($baz = 'z9'), "\n"; # aa0 を表示
print ++($qux = 'z9'), "\n"; # aa0 を表示
print ++($quux = 'yzz'), "\n"; # zaa を表示


このマジカルな動作はインクリメントに限られていて、デクリメントには対応していません。もちろん、対象が数値であれば、通常通りデクリメントは可能です。

0x1d -> 0x1e へ



「 マジカルインクリメント 」。なんとも素敵な響きです。

「 インクリメント 」だけでも心躍る僕にとって、「マジカル」との組み合わせは、なんらかひとつの到達点を示している様に思えます。

「 Magical Increment 」と、アルファベットの字面も素晴らしい。それは愛でるに値すると言っても過言ではないでしょう。

「 リストリテラル 」もなかなか良い感じです。やや端正な雰囲気があります。愛でるというよりは鑑賞する。眺めるといった感じでしょうか。

「リストリテラル」は、「アストラル」の類型に属するものだと推測出来ます。少なくとも「ランバラル」とは別の系統です。

参考情報は以下の書籍を中心に Wikipedia および各 Web サイト。それと詳しい先輩。

参考 :「Randal L. Schwartz, brian d foy, Tom Phoenix 共著 近藤 嘉雪 訳「初めての Perl 第 6 版」(オライリー・ジャパン発行 ISBN978-4-87311-567-2)」

次回 (0x1e) へ続く

過去記事 RSS










同じカテゴリー(Perl)の記事
 Perl mp2 翻訳 Web コンテンツ圧縮の FAQ (d228) (2023-10-11 23:49)
 Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227) (2023-05-26 15:41)
 Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226) (2023-05-19 17:05)
 Perl mp2 翻訳 テンプレートシステムの選択 (d225) (2022-08-15 22:23)
 Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224) (2022-06-15 20:43)
 Perl mp2 翻訳 チュートリアル (d223) (2022-06-15 20:42)

Llama
リャマ
TI-DA
てぃーだブログ
プロフィール
セラ (perlackline)
セラ (perlackline)
QRコード
QRCODE
オーナーへメッセージ

PAGE TOP ▲