2章スカラーデータ

メモ

  1. Perl内部では、整数値というものが存在しない(p24)
  2. Perlでは、整数リテラルに下線_をはさんで読みやすくすることができる(p25)
  3. べき乗演算子(p26)
  4. シングルクォート文字列リテラル:シングルクォートの間に置かれたすべての文字がそのまま文字列の内容になる(p27)
  5. ダブルクォート文字列リテラル:逆スラッシュエスケープ、変数展開(p28)
  6. 文字列演算子(p29)
  7. 文字列繰り返し演算子(p30)
    • "fred" x 3 # "fredfredfred"になる
    • 文字列繰り返し演算子は可換ではない
  8. 数値と文字列間の自動変換(p30)
    • 適用する演算子によって自動的に解釈してくれる
      • "12" * "3" の値は36になる
      • 末尾にある数字以外の文字、および先頭の空白文字は黙って捨てられる
      • "12fred34" * " 3" は 12 * 3 になり 36 になる
  9. スカラー変数(p32)
    • 大文字と小文字は別の文字
    • Perlスカラー変数は、常に先頭に$がつく
  10. スカラー変数を文字列の中に展開する(p36)
    • スカラー変数に値がセットされていなければ、代わりに空文字列が使われる
    • $barney = "fred ate a $meat"; # $meat に値がセットされていなければ、$barneyは"fred ate a "になる
  11. ブール値(p41)
    • Perlは独立したブール値を持っていない
  12. ユーザからの入力を受け取るなど(p41〜43)
    • chomp($text = ); # テキストを読み込み、末尾の改行を削除
  13. 未定義値(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を評価していたところを修正しました。