忍者ブログ
  • 2024.04
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 2024.06
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/05/06 15:35 】 |
Perlのスカラー変数
リャマ本を読んで知ったことをつらつらと。

数値は内部ですべて倍精度浮動小数点数で扱われる。
その型は、PerlをコンパイルしたCのコンパイラのdouble型。

頭に0をつけると8進数、
0xだと16進数、
0bだと2進数。このあたりはCと同じ。
アンダースコアをカンマ代わりに入れられる。

バイナリデータも文字列として扱える。なぜならPerlは文字列にあらゆる文字が使えるから。そこに「組み込まれた制限は存在しない」。

シングルクォート文字列は、文字列をそのまま出す。例外はシングルクォート自身とバックスラッシュのみで、それらは2つ続けて書くことで表す。
ダブルクォート文字列は、バックスラッシュがエスケープになり、また変数展開が行われる。$の前にバックスラッシュをつけると展開されない。
@の前にもつけておく。でないと配列変数と見なそうとして警告が出る。
また、配列の添字と思われないように、[の前にもつけておく。

文字列の足し算はドット。+ ではない。型がないので、数値としての加算なのか文字列としての加算なのかを区別するために演算子が別になっていると思われる。
小文字のxだと文字列の乗算(文字列の繰り返し)。"a" x 3 が "aaa"になる。

文字列の比較演算子は
eq, ne, lt, le, gt, ge,
を使う。>や==を使うと、文字列を数値に変換して比較した結果を出す。このとき警告が出る(use warnings;のとき)。

末尾の改行を削除するには
chomp($text);
chomp $text; #でもいい
chomp($text = ); #よくある形
末尾以外の改行は削除しない。

未初期化変数には undef が格納されている。
これは数値とも文字列とも違うスカラー値であるが、数値では0、文字列では空文字列として振る舞う。初期化せずに使える(それがPerlのプラクティスとしてどうなのかは知らない)
defined関数を使うとundefかどうか判別できる。


PR
【2012/03/10 22:20 】 | perl | 有り難いご意見(0)
<<Perlの実行 | ホーム | LAMP>>
有り難いご意見
貴重なご意見の投稿














<<前ページ | ホーム | 次ページ>>