1. ホーム
  2. スクリプト・コラム
  3. パール
  4. アプリケーションのヒント

Perl 変数の使い方を説明するための Perl 構文

2022-01-29 08:50:38
この記事とあなたはPerlの構文でPerlの変数の概念に焦点を当て、Perlの変数はスカラー変数、配列変数、連想配列変数3カテゴリに分割されます。
Perlの文法入門

1. Perl変数
1.1. Perl 構文における Perl 変数の分類
Perlの変数は、スカラ変数、配列変数、連想配列変数の3つに分類されます。Perl の変数は大文字と小文字を区別します。例えば、An、AN、an は 3 つの異なる変数ですが、異なる変数の例では同じ名前を使用できます。例えば、VAR はスカラ変数であり、同時に VAR でもある配列変数も存在します。Perlは、変数の例ごとに独立した名前空間、および他のPerlの変数を受け入れるため、これは、データの任意の例を格納することができ、Cのように変数を宣言する必要はありませんが、データの例は、イニシアティブの間に変換されますPerl変数は、グローバル変数とコース変数を持っているが、デフォルトは、グローバル変数です。
1.2. Perl 変数
1.2.1 Perl 構文におけるスカラー変数(スカラー変数)
スカラー変数は1つの値しか保持できません。Perlのスカラー変数の名前は、常に$という文字で始まります。 次のPerl文は、スカラー変数$nineに値9を代入しています。
コピーコード コードは以下の通りです。

$nine=9; 
$name='BATI'; 
print($name,'is',$nine);

上記の文をTEST01.PLファイルとして保存し、DOSで実行します(WIN9XのMS-DOSインスタンスも可能です)。
C:\Perl5>PerlTEST01.PL(Enter)
BATIis9 (えっ、見覚えある? そう、Perlと私たちの共通のC言語はとても似ているのです)

1.2.2 Perlの構文における配列変数

配列は、一度に複数の変数を格納できるテーブルです。次のような方法で代入されます。

平日=('日','月','火','水','木','金','土')となります。

print(@weekdays);#output is:SunMonTueWedThrFriSat
print($weekdays[1]);#output is:Sun
work=@weekdays[1..5];#この時、配列workの値は('Mon','Tue",... ,'Fri')となります。
none=();# 空の配列を意味する

配列の変数名が@で始まり、[]内は配列の添え字の値で、0から始まります。これはやはりC言語とよく似ていますね。
また、Perlでは、配列名だけが珍しくて、添え字がない場合、例えばCのように全体が出力されます。
最初の出力文です。

しかし、Sunの出力で、配列の中の値を参照するとき、もはや@ではなく、$を変数の先頭にしていることに注目してください。これは、一つの値という意味ではスカラー変数ですから、(これはCとは違いますが)当然、添え字の値を与えなければなりません。
配列に値を代入する方法には様々なものがあります。前に見たのは配列に値を代入する方法ですが、変数や他の配列の値などを使って配列に値を代入することもできます。

name=($firstname,@lastname)です。
say=('Hesaid',@saysomething) とします。

SLICEの例です。

コピーコード コードは以下の通りです。

@weekend=@weekdays[0,6];# The value of the array weekend is ('Sun','Sat') 
print(@weekdays[1..5,0,6]);#output result is 'MonTueWedThuFriSunSat'

Perlは、配列の最後のインデックス値を返すために使用する$#varという特別な器官もサポートしています。例えば、次の文は、$[organ]を使って配列の最初のインデックス値を決定し、$#varを使って配列の最後のインデックス値を決定し、配列全体を表現しています。

for($i=$[;$i<=$#buffer;$i++){print$buffer[$i];}.
上記の文は、print@buffer;と同じ出力を生成します。

1.2.3 Perl 構文におけるスカラー変数と配列変数

表演算子(,)は、連番演算子(,)と非常によく似ています。したがって、Perlがどちらの演算子を適用するかは、実行時のコマンドファイルの詳細な環境、つまり配列とスカラ値のどちらを使用しているかに依存します。次の2つの式について考えてみてください。

@an_array=(1,2,3,4,5);
$a_scalar=(1,2,3,4,5);

最初の文は配列を初期化し、2番目の文は変数$a_scalarの値を5に設定し、最初の4つの要素の割り当てをなくしています。
の値を指定します。
別の例をご覧ください。

コピーコード コードは以下の通りです。

print$assoc{1,2}; 
@print$assoc{1,2};

最初の文は2次元の連想配列の1つの要素の値を表示し、2番目の文は1次元の配列の2つの要素の値を表示します。

1.2.4 連想配列変数のためのPerl構文

関係配列変数は、スカラー変数のテーブルを格納できるという点で、配列変数と非常によく似ています。違いは、配列変数は整数の添え字で配列の要素を参照しなければならないのに対し、 連想配列変数は任意の値を添え字として配列の要素を参照できることです。連想配列の添え字は、キー値(Key)と呼ばれ、インデックス値となります。以下はそれを理解するための例です。

コピーコード コードは以下の通りです。

$ages{'Bob'}=35; 
$ages{'Mary'}=25; 
$,=''; 
print@ages{'Bob','Mary'}; 
printkeys(%ages); 
for$name(keys(%ages)) 

print"$nameis$ages{$keys}\n"; 
}

Perlは、今後のprint文の出力に影響が出るように、変数'$,'に値を代入していますが、今後、特殊変数'$,'を取り上げることにします。
ages{'Bob','Mary'} は括弧内のキーを与え、要素への参照を意味し、このステートメントは2つのキー値を持ち、配列の一部への参照を意味します。
printkeys(%ages) は、keys 演算子を使用しています。その結果、連想配列のすべてのキーが返され、表が形成されます。ages は、連想配列全体への参照を意味します。
ラウンドロビンのprint文に注目してください。ここでは、""(ダブルクォート)で変数を挿入する使い方が見られますが、これは長期的にも短期的にも非常に効果的です。出力結果では、変数が最終的に変数の値で置き換えられることになり、これを補間といいます。しかし、Perlでは、''(シングルクォート)の中に変数を挿入することはできません !!!