値を表す固定の表記法
literal (リテラル) とは、コードの中で具体的な値を表すための表記法のことです。
値の型によって「数値リテラル」「文字列リテラル」などと呼ばれます。
例えば、整数なら my $num = 4294967296;
と定義できますが、
my $num = 4_294_967_296;
と書くこともできます。
リテラルは Perl に限らず様々なプログラム言語で数多く用意されています。 ここでは Perl で使えるリテラルをいくつか紹介します。
数値を表すリテラルには、次のようなものが用意されています。
リテラル | 説明 |
---|---|
12345 |
整数 |
12345.67 |
小数 |
23E3 |
乗数表記(23E3 は 23 × 10 の 3 乗を表し、23000 のことを表す) |
.23E-3 |
乗数表記(.23E-3 は 0.23 × 10 の -3 乗を表し、0.00023 のことを表す) |
4_294_967_296 |
桁区切りをアンダースコアで表現 |
0xff |
16 進数表記(0xff は 255 を表す) |
0377 |
8 進数表記(0377 は 255 を表す) |
0b011011 |
2 進数表記(0b011011 は 27 を表す) |
4_294_967_296
のように桁区切りにアンダースコアを使うことができますが、
アンダースコアーは 2 回以上連続で現れなければ、どこで使っても構いません。
Perl はアンダースコアーを桁区切りとして認識しているわけではなく、単に無視するだけです。
従って、4_294_967_296
も 42_94_96_72_96
も同じ値を表します。
文字列を表現するには、その文字列をシングルクォーテーションまたはダブルクォーテーションで囲みます。 ただし、シングルクォーテーションで囲んだ文字列の中にエスケープシーケンスや変数を入れることはできません。 シングルクォーテーションで囲んだ文字列の通りに解釈されます。
my $name = 'Taro';
print 'Hi, ${name}!\n'; # "Hi, ${name}!\n" とそのまま出力される
print "Hi, ${name}!\n"; # "Hi, Taro!" と変数とエスケースシーケンスが展開されて出力される
バージョンを表現するためのリテラルで、基本的に Perl 本体のバージョンやモジュールのバージョンを表現するために使われます。
バージョンリテラルは、先頭が v
で始まり、以降、数値をドットで区切ります。
ドットが 3 つ以上なら、先頭の v
を付ける必要はありません。もちろん、付けても問題はありません。
my $ver1 = v1234;
my $ver2 = v12.34;
my $ver3 = v1.2.34;
my $ver4 = 1.2.34;
my $ver5 = 1.2.34.56;
このバージョンリテラルは、require
と
use
の引数として使われます。
use File::Copy v2.41; # モジュールの最低バージョンを指定
use v5.38.0; # Perl 本体の最低バージョンを指定
require v5.38.0; # Perl 本体の最低バージョンを指定
単独の値ではありませんが、Perl ではリストの表現もリテラルと呼びます。 Perl では配列やハッシュをリストリテラルで定義します。 リストリテラルは、要素をカンマで区切り、全体をカッコで囲みます。
my @ary = ( 1, 2, 3 );
my %hash = ( 'taro', 23, 'jiro', 19 );