ぱかぽこお馬さんPumpkinNet
 わいわいコミュニケーションネットワーク 
PumpkinNet CGI工房へようこそ。
Perl基礎講座(1)


CGI工房ホーム
スクリプト講座ホーム
CGIってなに?

(Introduction)
Perlをゲットしよう!
基礎講座(1)
変数の扱い
基礎講座(2)
制御構造文 if
基礎講座(3)
変数の複数形(1)
基礎講座(4)
ループの処理
基礎講座(5)
変数の複数形(2)
Perl基礎講座(1)
変数の使い方について説明します。

変数ってなに?

変数というのは箱みたいなものです。
一時的にそこのところに値を入れておいて、計算させたりするために使います。
例えば180 という値を変数に入れます。
それを、1秒間に1つずつマイナスしていって、値が0になったら画面上にメッセージを流す!!
なんてすれば、カップラーメンのタイマーにも使えます(笑)
60秒*3分で、180ですよね。

変数はスカラー変数、と言われます。単に「変数」で覚えておけばいいでしょう。
変数はこのように定義します。 $なまえ;
文の終わりは 必ず「;」改行で次の行に移ります。
C言語のように変数名を事前に定義する必要はないので、
使う時、使いたい時に、変数名を作って値を入れればよいです。

変数名定義と、値の代入

$なまえ = "キャラクター";
$なまえ = 数値;
$なまえ = 'キャラクター';
変数の定義は、この3つのように、変数名 = とします。 そうすると右辺のデータが
左辺に代入されます。
数学とは違う点が一つ。 数学では「a = b」としたら、両方ともが同じだということを
指し示すことになるわけですが、左辺に右辺のデータが入るだけです。
途中で、左辺$なまえ のデータが変わったとしても、右辺側のデータには影響がない
右辺のデータが変わったとしても、左辺側のデータには影響がない
ということを頭に入れておいてください。
実際には変数名には2byte(漢字)は使えませんので、変数名は0-9,A-Z,a-zで定義することになります。
$name="3333";
$name=3333;
これはどちらも 変数名「name」に、値を代入をしています。
値が、数なのか、キャラクタなのかで扱いが変わってきます。
ただし、perlの場合はキャラクタとして入れた数値も、後で計算したりすることもできます。
Perl以外の言語などでは厳密に扱われることが多いです。
なるべく数値は数値として扱いましょう。
(頭の中でどういうデータが流れていくのかを把握しながら作らないと、バグを生み出す原因になったりしますからね)
数値以外のキャラクタ文字は、必ずダブルクォーテーション("")、または
シングルクォーテーション(')でくくるのをお忘れなく。

シングルクォーテーションと、ダブルクォーテーション

上で書いたように、数値以外のキャラクター文字は、シングルクォーテーション、ダブルクォーテーションの2つでくくる方法があります。

で、その違いがどこにあるのか、を説明したいと思います。
まず、変数abcd を定義し、値にsample を入れてみます。
$abcd = "sample";
これで定義ができました。(ここはシングルでもかまいません)
さて、では次に、変数名efgh を定義し、値の中に変数abcd を「入れながら」定義
してみましょう。
こんな風に書きます。

#--- 上がダブルクォーテーション 下がシングルクォーテーション ----
$efgh = "this is a $abcd";
$efgh = 'this is a $abcd';

画面に出力するのはprint文ですので、以下のようにスクリプトを書いて、
コマンドプロンプトから実行させてみましょう。
sample1とsample2の2つを作ります。
片方はシングルクォーテーション、もう片方はダブルクォーテーションで。
sample1.pl
#------------------------------------------------
$abcd ="sample";
$efgh ="this is a $abcd";

print $efgh;
print "\n";
#------------------------------------------------- ここまで
sample2.pl
#------------------------------------------------
$abcd ="sample";
$efgh ='this is a $abcd';

print $efgh;
print "\n";

#----------------------------------------- ここまで

さて、どうなるでしょうか?
サンプル1 実行結果


サンプル2 実行結果


サンプル1は $abcdの値であるsample
表示されています。
でも、サンプル2は$abcdと、そのまま出てしまいましたね。

そうです、シングルクォーテーションでくくっている場合、その中で
変数の値が展開(変数展開と言います)されないのです。

重要なポイントです、よく押さえておいてください。
ダブルクォーテーション内は変数展開が起こる。
シングルクォーテーション内は変数展開されない。
では、また次までしばらくお待ちください。


CGI工房 ホーム  更新履歴  掲示板系  チャット系  メール系  その他スクリプト  スクリプト講座  情報交換BBS
ご意見・ご要望は掲示板もしくは、メールにて:info@pumpkinnet.to

Copyright (C) 1986〜2004 Pumpkinnet All Rights Reserved
PumpkiNet-MiniBanner