2章スカラーデータ
メモ
- Perl内部では、整数値というものが存在しない(p24)
- Perlでは、整数リテラルに下線_をはさんで読みやすくすることができる(p25)
- べき乗演算子(p26)
- シングルクォート文字列リテラル:シングルクォートの間に置かれたすべての文字がそのまま文字列の内容になる(p27)
- ダブルクォート文字列リテラル:逆スラッシュエスケープ、変数展開(p28)
- 文字列演算子(p29)
- "hello"."world" # "hello world"と同じ
- "hello".' '."world" # 'hello world'と同じ
- 'hello world'."\n" # "hello world\n"と同じ
- 文字列繰り返し演算子(p30)
- "fred" x 3 # "fredfredfred"になる
- 文字列繰り返し演算子は可換ではない
- 数値と文字列間の自動変換(p30)
- 適用する演算子によって自動的に解釈してくれる
- "12" * "3" の値は36になる
- 末尾にある数字以外の文字、および先頭の空白文字は黙って捨てられる
- "12fred34" * " 3" は 12 * 3 になり 36 になる
- 適用する演算子によって自動的に解釈してくれる
- スカラー変数(p32)
- スカラー変数を文字列の中に展開する(p36)
- スカラー変数に値がセットされていなければ、代わりに空文字列が使われる
- $barney = "fred ate a $meat"; # $meat に値がセットされていなければ、$barneyは"fred ate a "になる
- ブール値(p41)
- ユーザからの入力を受け取るなど(p41〜43)
- chomp($text =
); # テキストを読み込み、末尾の改行を削除
- chomp($text =
- 未定義値(p44)
- 変数は、最初に値を設定されるまでは、特別な値 undef (未定義値 : undefined value) を持っている
- undef を数値として扱えば、自動的に0として振る舞う。文字列として扱えば空文字列が入っているように振る舞う。
- $string .= "more text\n"; # 変数 $string に代入演算子を用いて文字列を連結する。 $string が undef ならば空文字列が入っているように振る舞う
- 警告をオンにしている場合、未定義値を妙なやり方で使用すると、警告メッセージが表示される
- 値が undef であって空文字列でないことを確かめるには、defined 関数を利用する
簡単なコード
2. Perlでは、整数リテラルに下線_をはさんで読みやすくすることができる(p25)
ソース
#!/usr/bion/perl if(65535==65_535) { print "65535=65_535\n"; }
実行結果
65535=65_535
3. べき乗演算子(p26)
4. シングルクォート文字列リテラル:シングルクォートの間に置かれたすべての文字がそのまま文字列の内容になる(p27)
5. ダブルクォート文字列リテラル:逆スラッシュエスケープ、変数展開(p28)
ソース
#!/usr/bin/perl print 'fred'; # fred と表示。改行なし。 print "fred"; # fred と表示。改行なし。 print 'fred\n'; # fred\n と表示。改行なし。 print "fred\n"; # fred と表示。改行あり。 print 'Don\'t go!'; # Don't go! と表示。改行なし。 print "\n"; $x = 3**4; print "3の4乗 = $x\n";
実行結果
fredfredfred\nfred
Don't go!
3の4乗 = 81
6. 文字列演算子(p29)
7. 文字列繰り返し演算子(p30)
8. 数値と文字列間の自動変換(p30)
ソース
#!/usr/bin/perl print "hello"."world"; # "hello world"と同じ print "hello".' '."world"; # 'hello world'と同じ print 'hello world'."\n"; # "hello world\n"と同じ $s = "fred" x 3; # "fredfredfred" が $s に代入される print $s."\n"; # fredfredfred と表示して改行 $a = "12fred34"; $b = " 3"; print $a*$b."\n"; $c = "fred"; print $a*$b*$c."\n";
実行結果
helloworldhello worldhello world
fredfredfred
36
0
10. スカラー変数を文字列の中に展開する(p36)
ソース
#!/usr/bin/perl $firstName = "shiget84"; $familyName; $name = ""; $name .= $firstName; $name .= " "; $name .= $familyName; # $familyName には値がセットされていないので空文字列になる print "My name is $name, Nice to meet you!\n";
実行結果
My name is shiget84 , Nice to meet you!
11. ブール値(p41)
ソース
#!/usr/bin/perl $a; if($a) { print "(a:$a)は真\n"; } else { print "(a:$a)は偽\n"; } $b = 0; if($b) { print "(b:$b)は真\n"; } else { print "(b:$b)は偽\n"; } $c = ''; if($c) { print "(c:$c)は真\n"; } else { print "(c:$c)は偽\n"; } $d = '0'; if($d) { print "(d:$d)は真\n"; } else { print "(d:$d)は偽\n"; } $e = 128; if($e) { print "(e:$e)は真\n"; } else { print "(e:$e)は偽\n"; } $f = "shiget"; if($f) { print "(f:$f)は真\n"; } else { print "(f:$f)は偽\n"; }
実行結果
(a:)は偽
(b:0)は偽
(c:)は偽
(d:0)は偽
(e:128)は真
(f:shiget)は真
- 更新履歴
- 2009/07/15 0:00
- 11. ブール値(p41)のソースで、$dを評価すべきところで$aを評価していたところを修正しました。
- 2009/07/15 0:00