プログラミングPerl 第2章 基本構成要素
欲張りな・・・といえば?
トークン(token)とは、意味を持つ文字の並びの事で
(中略)
トークンの認識は「欲張り」に行われる。つまり、ある時点で、Perlのパーサが短いトークンと長いトークンのどちらでも認識できるような場合には、長いトークンが選択される
(58p,59p)
my $str = "ABCABCABC"; if ( $str =~ /(A.*C)/ ) { print $1 , "\n"; # ABCABCABC と全部返ってくる } # ABCだけにマッチさせたい場合には 量指定子 `?` を追加する if ( $str =~ /(A.*?C)/ ) { print $1, "\n"; # ABC }
- そういえば、IPv4のルーティングでも最長マッチ、ロンゲストマッチが適用されるよなぁ
- 計算機世界の常識、公理みたいなものなのかな?
- 最長マッチは1つか該当無しだけど、最短マッチは1つ、2つ以上、該当無しとなる可能性があるから、とか?
ここまでの感想
- 「Perlの聖典」ってことで気負いすぎたのかもしれないけど、今のところ座学っぽい?
- 書いてある事をコードにして確かめる、という機会はごく少ない
- ただ、今まで読んできたPerl本の知識が体系的に編み上げられていくような感覚がある
- あぁ、あのPerl本の作者さんはここを抜き出して書いたんだなぁ、とか
たのしい
これはつまり、
$foo
と@foo
とは全く別の変数である事を意味する。先ほど紹介した規則も合わせると、$foo[1]
は配列@foo
の要素であって、スカラー変数$foo
とは無関係だという事がわかる。ちょっと妙な話だと思うかもしれないけど、なあに気にする事は無い。なぜなら、本当に妙な話だからだ。
(63p)
- 投げっぱなしかよ!
- こんな感じで読んでて楽しい
- ただ、これは今まで勉強してきた下積みがあればこそなのか、そうでないのか、自分ではもう判断がつかない、当事者だから
- ついでに、これを妙に思うかというと、うちはそうは思わなくて、これは最初にモノにしたプログラム言語がPerlだからなのだなぁ、と
- JavaScript書いた時は、スカラーか配列かハッシュか分からなくて変数名に
s_hogehoge
a_hugahuga
とかつけてた - 郷に入って郷に従ってない
- JavaScript書いた時は、スカラーか配列かハッシュか分からなくて変数名に
発見がある
- あたりまえだけど、あたりまえでない
浮動小数点の制度は無限ではない事に注意しよう。これは重要な事なので覚えておいてほしい。なぜなら、その性で、
(10 / 3 == 1/3 * 10)
のような比較は(たいていの場合)うまく行かないからだ。
if (10 / 3 == 1/3*10){ print "TRUE"; }else{ print "FALSE" } # FALSE
- 浮動小数点計算には気をつけなければならない、というのはどこかで見たんだけど、なるほどこういう事か