🍃このブログは移転しました。
3秒後、自動的に移動します・・・。

JavaScriptに慣れた頭で初めてPerlを勉強すると Part.1

こういうとこで戸惑ったよ、っていうメモ。
同じ境遇の方がいれば、参考になればと思って。

JavaScriptからプログラミングに入っただけで、たいしてJavaScriptが書けるわけではないので、そのあたりはご留意とご容赦を・・。

参考:O'Reilly Japan - 初めてのPerl 第6版

この本なので基本記法くらいしか書かないかも。

関数呼び出しに()がいらない(こともある

# なにこれきもちわるい
print "Hello, world!\n"; # Hello, world![改行]
print 2 * 10; # 20

# なにこれきもちわr
print (10 + 5) * 4; # print(10 + 5)が解釈されて、あとの * 4 はいりませんとエラー
print((10 + 5) * 4); # 60 ってちゃんと動く

" と ' が違う動作

print 'あいうえお\n';
# あいうえお\n がそのまま出る

print "あいうえお\n";
# あおいえお[改行] と解釈される。
# ダブルクオートだと、変数も展開される。

変数宣言に種類がある+中身が左側に寄る

# 宣言
$str1 = 'hoge';
@arr1 = (1,2,3,4);
@arr2 = qw/1 2 3 4/; # これはなかなか・・
%hsh1 = ('name', 'hoge', 'age', 10); # なにこれきもちわるい
%hsh2 = (name => 'hoge', age => 10); # まだマシやけど{}じゃないのね

# 左側に寄るというか
print($arr1[2]); # @arr1[2]じゃないのね
print($hsh2{name}); # %hsh2.nameじゃないのね

こういうのをコンテキスト・・っていうの?

文字列の比較

# if($str == 'hoge'); 文字列の比較がしたいなら
  if($str eq 'hoge'); # それ用の演算子を使う

chomp()

末尾の改行(\n)を取ってくれる用途(最初は謎だった)の関数があって。

# $str = chomp(<STDIN>); こう書くとエラーになるので
chomp($str = <STDIN>); # こう書く

というかこれに限らず変数への代入ってこう書かないといかん。

改行したりしなかったり

print "hoge";
print "fuga";

# hogefuga って出る!さっきはchomp()せなあかんかったのに!

もうちょっと読んだらPart.2を書きます・・。

Perlむずかしー。