Perl Perl_0
Perl 「 リテラル 」(数値・文字列) (0x08)

Perl について、復習を兼ねて断片的な情報を掲載して行く連載その 0x08 回。
文字列と数値のリテラルについて。
リテラル (literal) : 数値
数値のリテラルには、整数リテラルと浮動小数点数リテラルがあります。
浮動小数点数とは、コンピュータの数値表現方式で、少数の近似値を扱うための方法です。
コンピュータは内部的に 0 か 1 で処理をするので、0 と 1 の間、ON と OFF の間、という様な表現は得意ではなく、近似値で補う必要がある様です。
どちらかというと、少数は得意ではないということですが、基本的には、少数も含めてマイナス記号等、普段使う書き方で問題ありません。
ただし、ちょっとした決まりがあります。
例えば、とても大きな (小さな) 値を表す指数表記には e が使えます。
7.25e45 # 7.25 * 10 の 45 乗
-12E-23 # マイナス 12 * -10 の 24 乗 (e は大文字も可)
また、Perl は、数値演算子として「べき乗演算子 (exponentiation operator)」 も持っています。演算子は * (アスタリスク) を 2 つ並べます。
2 ** 2 # 2 の 2 乗 = 4
2 ** 3 # 2 の 3 乗 = 8
2 ** 4 # 2 の 4 乗 = 16
2 ** 5 # 2 の 5 乗 = 32
2 ** 6 # 2 の 6 乗 = 64
基本的な加減乗除の数値の演算子は以下の記号で行います。
加法 + (プラス記号)
減法 - (マイナス記号)
乗法 * (アスタリスク)
除法 / (スラッシュ)
Perl は余剰演算子 % を持っています。これは除法の余りを取ります。C 言語も同じ演算子を持っていました。
print 10 % 3; # 10 / 3 の余り 1 が表示されます。
整数リテラルでは、桁の多い数の書き方に特徴があります。
通常は , (Camma) で区切るところですが、Perl の中で , は別の用途に使われているので数値の区切りには使えません。整数リテラルの桁区切りには以下の様に _ (Under score) を利用します。
99999999 # 区切らなくても問題なし
99_999_999 # 区切る場合は _ (Under score) で区切る
10 進数以外の整数リテラルも書けます。
頭に数字の 0 (ゼロ) を付けると 8 進数 (Octal number) になります。
0 (ゼロ) に続けて x (エックス) を付けると 16 進数 (Hexadecimal number) になります。
0 (ゼロ) に続けて b (ビー) を付けると 2 進数 (Binary number) になります。
以下は 10 進数で見るとすべて 255 になります。
0377 # Oct
0xff # Hex
0b11111111 # Binary
こうした 10 進数以外の桁区切りにも _ が使えます。
0744_755
0x50_65_72_7C
0b1111_1111
Perl に限らず、コンピュータに数値演算をさせる場合は、前述の浮動小数点数を使う関係上、大小様々な誤差が出たりするそうです。
単純な計算でおかしな値が返されると、初めのうちはびっくりするかもしれませんが、ほとんどの場合で対策方法はすでに準備されています。
20 年以上に渡り開発されてきた Perl であれば、なおさらかもしれないですね。
リテラル (literal) : 文字列
文字を並べたものを、文字列と言います。
Perl が扱う最も短い文字列は、文字を含まない空文字 (Empty string) です。文字を含まないのに文字列と呼ぶのはおかしな気がしますが、そういう仕様になっています。
Perl が扱う最も長い文字列は、利用可能なメモリを使い果たす文字列です。
現実には、メモリを使い果たすほど長い文字列を利用した場合、Perl はほとんど何も処理できないだろうと言われます。
Perl には「組み込まれた制限は存在しない」という原則があるそうです。処理が出来ないにも関わらず文字列長に制限を設けないのは、そうした Perl の原則に従うものだということです。
文字列リテラルには以下の 2 つがあります。
+ シングルクォート文字列リテラル (Single-quoted string literal)
+ ダブルクォート文字列リテラル (Double-quoted string literal)
これらはそれぞれ ' ' と " " で文字を囲みます。
' と " は文字列の始点と終点を Perl に知らせるための記号なので、クォーテッドするために使う記号は、文字列に含めることは出来ません。それは文字列の終点を意味するからです。
# いずれもエラーになります。
"Good" morning";
'Good' morning';
文字列の中でクォーテッドの記号を使いたい場合は、\ (バックスラッシュ) でエスケープします。ダブルクォート文字列リテラルの中で \ を使いたい場合は、\\ としてエスケープします。
シングルクォート文字列リテラルの中で \ は問題なく使えますが、終点を示すシングルクォートの直前に \ を置くと、クォートが閉じられていないことになるので注意が必要です。
"Good\" morning"; # Good" morning と表示
'Good\' morning'; # Good' morning と表示
"Escape \\ Back slash"; # Escape\ Back slash と表示
'Escape \ Back slash'; # エスケープ不要
'Escape \'; # 終点がないとおこられる
0x08-> 0x09 へ
参考情報は以下の書籍を中心に Wikipedia および各 Web サイト。それと詳しい先輩。
参考 :「Randal L. Schwartz, brian d foy, Tom Phoenix 共著 近藤 嘉雪 訳「初めての Perl 第 6 版」(オライリー・ジャパン発行 ISBN978-4-87311-567-2)」
次回 (0x09) へ続く。
過去記事 RSS
数値のリテラルには、整数リテラルと浮動小数点数リテラルがあります。
浮動小数点数とは、コンピュータの数値表現方式で、少数の近似値を扱うための方法です。
コンピュータは内部的に 0 か 1 で処理をするので、0 と 1 の間、ON と OFF の間、という様な表現は得意ではなく、近似値で補う必要がある様です。
どちらかというと、少数は得意ではないということですが、基本的には、少数も含めてマイナス記号等、普段使う書き方で問題ありません。
ただし、ちょっとした決まりがあります。
例えば、とても大きな (小さな) 値を表す指数表記には e が使えます。
7.25e45 # 7.25 * 10 の 45 乗
-12E-23 # マイナス 12 * -10 の 24 乗 (e は大文字も可)
また、Perl は、数値演算子として「べき乗演算子 (exponentiation operator)」 も持っています。演算子は * (アスタリスク) を 2 つ並べます。
2 ** 2 # 2 の 2 乗 = 4
2 ** 3 # 2 の 3 乗 = 8
2 ** 4 # 2 の 4 乗 = 16
2 ** 5 # 2 の 5 乗 = 32
2 ** 6 # 2 の 6 乗 = 64
基本的な加減乗除の数値の演算子は以下の記号で行います。
加法 + (プラス記号)
減法 - (マイナス記号)
乗法 * (アスタリスク)
除法 / (スラッシュ)
Perl は余剰演算子 % を持っています。これは除法の余りを取ります。C 言語も同じ演算子を持っていました。
print 10 % 3; # 10 / 3 の余り 1 が表示されます。
整数リテラルでは、桁の多い数の書き方に特徴があります。
通常は , (Camma) で区切るところですが、Perl の中で , は別の用途に使われているので数値の区切りには使えません。整数リテラルの桁区切りには以下の様に _ (Under score) を利用します。
99999999 # 区切らなくても問題なし
99_999_999 # 区切る場合は _ (Under score) で区切る
10 進数以外の整数リテラルも書けます。
頭に数字の 0 (ゼロ) を付けると 8 進数 (Octal number) になります。
0 (ゼロ) に続けて x (エックス) を付けると 16 進数 (Hexadecimal number) になります。
0 (ゼロ) に続けて b (ビー) を付けると 2 進数 (Binary number) になります。
以下は 10 進数で見るとすべて 255 になります。
0377 # Oct
0xff # Hex
0b11111111 # Binary
こうした 10 進数以外の桁区切りにも _ が使えます。
0744_755
0x50_65_72_7C
0b1111_1111
Perl に限らず、コンピュータに数値演算をさせる場合は、前述の浮動小数点数を使う関係上、大小様々な誤差が出たりするそうです。
単純な計算でおかしな値が返されると、初めのうちはびっくりするかもしれませんが、ほとんどの場合で対策方法はすでに準備されています。
20 年以上に渡り開発されてきた Perl であれば、なおさらかもしれないですね。
リテラル (literal) : 文字列
文字を並べたものを、文字列と言います。
Perl が扱う最も短い文字列は、文字を含まない空文字 (Empty string) です。文字を含まないのに文字列と呼ぶのはおかしな気がしますが、そういう仕様になっています。
Perl が扱う最も長い文字列は、利用可能なメモリを使い果たす文字列です。
現実には、メモリを使い果たすほど長い文字列を利用した場合、Perl はほとんど何も処理できないだろうと言われます。
Perl には「組み込まれた制限は存在しない」という原則があるそうです。処理が出来ないにも関わらず文字列長に制限を設けないのは、そうした Perl の原則に従うものだということです。
文字列リテラルには以下の 2 つがあります。
+ シングルクォート文字列リテラル (Single-quoted string literal)
+ ダブルクォート文字列リテラル (Double-quoted string literal)
これらはそれぞれ ' ' と " " で文字を囲みます。
' と " は文字列の始点と終点を Perl に知らせるための記号なので、クォーテッドするために使う記号は、文字列に含めることは出来ません。それは文字列の終点を意味するからです。
# いずれもエラーになります。
"Good" morning";
'Good' morning';
文字列の中でクォーテッドの記号を使いたい場合は、\ (バックスラッシュ) でエスケープします。ダブルクォート文字列リテラルの中で \ を使いたい場合は、\\ としてエスケープします。
シングルクォート文字列リテラルの中で \ は問題なく使えますが、終点を示すシングルクォートの直前に \ を置くと、クォートが閉じられていないことになるので注意が必要です。
"Good\" morning"; # Good" morning と表示
'Good\' morning'; # Good' morning と表示
"Escape \\ Back slash"; # Escape\ Back slash と表示
'Escape \ Back slash'; # エスケープ不要
'Escape \'; # 終点がないとおこられる
0x08-> 0x09 へ
参考情報は以下の書籍を中心に Wikipedia および各 Web サイト。それと詳しい先輩。
参考 :「Randal L. Schwartz, brian d foy, Tom Phoenix 共著 近藤 嘉雪 訳「初めての Perl 第 6 版」(オライリー・ジャパン発行 ISBN978-4-87311-567-2)」
次回 (0x09) へ続く。
過去記事 RSS
文字を並べたものを、文字列と言います。
Perl が扱う最も短い文字列は、文字を含まない空文字 (Empty string) です。文字を含まないのに文字列と呼ぶのはおかしな気がしますが、そういう仕様になっています。
Perl が扱う最も長い文字列は、利用可能なメモリを使い果たす文字列です。
現実には、メモリを使い果たすほど長い文字列を利用した場合、Perl はほとんど何も処理できないだろうと言われます。
Perl には「組み込まれた制限は存在しない」という原則があるそうです。処理が出来ないにも関わらず文字列長に制限を設けないのは、そうした Perl の原則に従うものだということです。
文字列リテラルには以下の 2 つがあります。
+ シングルクォート文字列リテラル (Single-quoted string literal)
+ ダブルクォート文字列リテラル (Double-quoted string literal)
これらはそれぞれ ' ' と " " で文字を囲みます。
' と " は文字列の始点と終点を Perl に知らせるための記号なので、クォーテッドするために使う記号は、文字列に含めることは出来ません。それは文字列の終点を意味するからです。
# いずれもエラーになります。
"Good" morning";
'Good' morning';
文字列の中でクォーテッドの記号を使いたい場合は、\ (バックスラッシュ) でエスケープします。ダブルクォート文字列リテラルの中で \ を使いたい場合は、\\ としてエスケープします。
シングルクォート文字列リテラルの中で \ は問題なく使えますが、終点を示すシングルクォートの直前に \ を置くと、クォートが閉じられていないことになるので注意が必要です。
"Good\" morning"; # Good" morning と表示
'Good\' morning'; # Good' morning と表示
"Escape \\ Back slash"; # Escape\ Back slash と表示
'Escape \ Back slash'; # エスケープ不要
'Escape \'; # 終点がないとおこられる
0x08-> 0x09 へ
参考情報は以下の書籍を中心に Wikipedia および各 Web サイト。それと詳しい先輩。
参考 :「Randal L. Schwartz, brian d foy, Tom Phoenix 共著 近藤 嘉雪 訳「初めての Perl 第 6 版」(オライリー・ジャパン発行 ISBN978-4-87311-567-2)」
次回 (0x09) へ続く。
過去記事 RSS
参考情報は以下の書籍を中心に Wikipedia および各 Web サイト。それと詳しい先輩。
参考 :「Randal L. Schwartz, brian d foy, Tom Phoenix 共著 近藤 嘉雪 訳「初めての Perl 第 6 版」(オライリー・ジャパン発行 ISBN978-4-87311-567-2)」
次回 (0x09) へ続く。
過去記事 RSS
Perl mp2 翻訳 Web コンテンツ圧縮の FAQ (d228)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)