3.0 変数

変数には、$ が頭につく。2.2 で暗黙の変数 $_ もその仲間である。


(例題 3.0) 変数の代入の例を示す。(p3-0.pl)
#!/usr/local/bin/perl
$x = 0.1;       # 変数 x に数値 0.1 を代入
$m = 'a b c';   # 変数 m に文字 a b c を代入
$y = "x = $x";  # 変数 y に x = 0.1 を代入
$z = 'x = $x';  # 変数 z に x = $x を代入
print "$x, $m, $y, $z \n"; # それぞれの変数の値を表示

文字列の代入では、'...' か "..." が使われるが、後者の場合には、 $x 等の変数の値が入る。

3.1 変数の結合

2つの変数を結合するには、"$a $b" を用いるか . を用いる。
(例題 3.0) 変数の代入の例を示す。(p3-1.pl)
#!/usr/local/bin/perl
$x = 0.1;        # 変数 x に数値 0.1 を代入
$m = 'a b c';    # 変数 m に文字 a b c を代入
$n = 'd e';      # 変数 x に数値 d e を代入
$o = $x.$m.$n;   # $x と $m と $n を結合して 変数 o に代入
print "$o \n";   # 変数 o を表示
$o = "$m $n" ;   # $m と $n を結合するとき 間に space を入れる。
print "$o \n";   # 変数 o を表示
$o = $m.' '.$n;  # この形でもよい。
print "$o \n";   # 変数 o を表示

文字変数と数字の変数は適当に文字変数として結合される。

3.2 変数の分離

2つの変数を分離するには、関数 split を用いる。
(例題 3.2) 変数の分離の例を示す。(p3-2.pl)
#!/usr/local/bin/perl
$_ = 'a b c d e'; # 暗黙の変数 $_ に文字 a b c d eを代入
split;            # 暗黙の変数 $_ の分割を行なう。
print "$_[1] \n"; # 分割した変数の第1成分 $_[1] を表示
print "$_[0] \n"; # 分割した変数の第0成分 $_[0] を表示
print "@_ \n";    # 分割した変数の集合である暗黙の配列 @_ を表示
#
$x = 'x,y,z,2.3,3.2'; # 変数 $x に文字 a,b,c,d,e を代入
@x=split(/,/ ,$x);# 変数 $x の ,による分割を行ない 配列 @x に代入
print "$x[1] \n"; # 分割した変数の第1成分 $x[1] を表示
print "$x[4] \n"; # 分割した変数の第4成分 $x[4] を表示
print "@x \n";    # 分割した変数の集合である配列 @x を表示

一番目の split の使い方は、暗黙の変数を用いた場合である。2 番目の split の使い方は、コンマ , で $x 区切りその結果を 配 列 @x に代入したものである。何で区切るかを /../ ではさんで示す。これを パターンと呼ぶ。配列とは、編集の集合 で 0 から 順に成分を持つものである(ベクトルのようなものであ る。)。配列の成分を参照する場合には、@ ではなく $ を使う点に 注意したい。
(例題 3.2) 次の例は、表の形式のデータを読み込んで その一部(2 番目と 3 番目の データ)を LaTeX の 表形式で 出力するプログラ ムです。(p3-3.pl)
#!/usr/local/bin/perl
#
# \begin{tabular}{ll} を印刷。特殊文字 \ を印刷する場合には \\ を用いる。
print "\\begin{tabular}{ll}\n";
#
while(<>) {            # 標準入力から入力がなくなるまで { 以下のことをせよ。
split;                 # 暗黙の変数 $_ の分割を行なう。
# 2 番目と 3 番目の データ を LaTeX の 表入力の内容を印刷します。
print "$_[1] & $_[2] \\\\ \n"; 
}                      # } の終了
#
print "\\end{tabular}\n"; # \end{tabular} の印刷。

ここで 注意したいのは、LaTeX で使う \ は Perl では 特殊文字なので、 \ を \ として使うために、\ の前に \ をつけ、\\ のように表します。 したがって、LaTeX の 改行である \\ は \\\\ になります。

これに以下の様なデータを p3-3.dat に作ります。

1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
p3-3.dat を読み込み p3-3.pl を実行し、p3-3.tex に出力します。
% p3-3.pl < p3-3.dat > p3-3.tex 
% cat p3-3.tex
\begin{tabular}{ll} 2 & 3 \\ 3 & 4 \\ 4 & 5 \\ 5 & 6 \\ \end{tabular} %
のように LaTeX の表に変換できました。