はじめまして(た)Perlさん

「リャマ本」を読み始めたので私的勉強メモ。

スカラーデータ

数値

整数と浮動小数点数の両方を扱える。

1          #整数
1.45       #浮動小数点数
7.5e14     #7.5*10の14乗(指数記法)もかける
12_345_678 #12,345,678みたいな3桁の,区切りは_で書くことも可能

10進数以外は0で始まるのは8進数、0xは16進数、0bは2進数。

数値演算子

他の言語と同じ。

でべき乗。これはPythonと同じかな。

文字列。

これも、他の言語と同様、シングルクォートとダブルクォートがある。
でも、まったく同じというわけじゃなくて、
\nとか\tとかの逆スラッシュエスケープはダブルクォートを使わなないといけない。

文字列演算子

これはちょっと新しいかも。
文字列用の演算子がある。
JavaScriptだと

var str = "abc" + "defg"; //->strは"abcdefg"になる

って+演算子が使えるけどPerlだと

$a = "abc"."defg";

と.で書く。
これはJavaScriptだと

var b = "1" + "3";//->bは"13"となる

となるけど、Perlだと

$b = "1" + "3"; #->bは4となる

からなんだろうな。
ちなみに

$c = "1abcd2" + "4";

はエラーにならず数字以外を無視して計算されて16となる。

繰り返し演算子もある。確かPythonだと*でできたはず。
Perlではxを使う。演算子に普通に記号じゃないxを使うのは
なんか変な感じがする。

スカラー変数

ドル($)記号のあとに変数名(Perl識別子っていう)。大文字小文字は別扱い。
Perl識別子の先頭は英数字もしくは_、それ以降は数字も可。

二項代入演算子

これは他の言語と同じ。

$d = 1;
$d = $d + 1;
#上は、下と同じ
$d += 1;

あと、三項演算子もあるらしい。

print

これも大体同じ
カンマ区切りで引数を渡すことが可能。
これ、print()なんだろうけど()は省略可能ってことなのかな?

ダブルクォート展開

これはすごく変な感じ。

$f = "abcdefg";
print "12345 $f";#12345 abcdefgと表示される。

文字列の中なのに変数が展開される。
でも、

print "$fabcde";

はできない。そりゃそうか、、、

比較演算子

これは同じだけど、文字列と数値で演算子がわかれている。

数値 文字列
== eq
!= ne
< lt
> gt
<= le
>= ge


今日はここまで。