演算を行うときの文字列と数値の自動変換

Perl では使用する演算子によっては、文字列を自動的に数値とみなして演算子したり、逆に数値を自動的に文字列とみなして演算する場合があります。ここでは Perl のプログラムの中で行われる文字列と数値の自動変換に関して解説します。

(Last modified: )

文字列と数値の自動変換

Perl ではダブルクオーテーションで囲まれた値は文字列として認識されます。その為、 "5" と記述した場合は文字列の「5」ですし、単に 5 と記述した場合は数値の「5」となります。

ただ Perl においては文字列と数値を厳密には区分していません。使用される演算子の種類によって、その演算子に対象となる値を文字列と判別したり数値と判別したりします。例えば + 演算子を使う場合には左辺及び右辺に書かれた値を数値として扱います。また . 演算子を使う場合は左辺及び右辺に書かれた値を文字列として扱います。

+ 演算子の例を見てください。

my $var;

$var = "3" + 4;

+ 演算子の左辺は文字列の "3" ですが、自動的に数値の 3 と判断し演算を行います。その結果、変数 $var には加算した結果の数値の 7 が格納されます。

. 演算子の例を見てください。

my $var;

$var = "3".4;

. 演算子の右辺は数値の「4」ですが、自動的に文字列の "4" と判断し演算を行います。その結果、変数 $var には文字列が連結された結果の文字列の "34" が格納されます。

サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

my ($var1, $var2, $var3,  $var4);

$var1 = "3" + 4;
$var2 = "3".4;

print "\"3\" + 4 = $var1\n";
print "\"3\".4 = $var2\n";

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

演算を行うときの文字列と数値の自動変換(1)

数値と文字列を加算した場合、また数値と文字列を連結した場合についてそれぞれ結果を画面に出力しました。

-- --

Perl のプログラムの中で行われる文字列と数値の自動変換に関して解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。