Hagex-day info

紅茶とお菓子について書いているほっこりブログです

2日目 基礎編#2

1.2 変数
perlで最も一般的な変数は一つだけ格納する「スカラー変数」
スカラー変数の最初にドル記号($)をつける
スカラー編集の書式は「$ variable
例1.2.3 変数の例スクリプト「""」ち「''」の違いの実際
$string = "太郎";

print "こんにちは、$stringさん\n";
print 'こんにちは、$stringさん\n';

実行結果は以下
こんにちは、太郎さん
こんにちは、$stringさん\n

「""」でくくったコードは変数を変数として認識するが、「''」を\nや$も全部ただの文字列として扱う。型はにているけど、結果が全く違う。


例1.2.4
$val = "鈴木";

print "こんにちは$valさん\n";
print "こんにちは$valsan\n";
print "こんにちは${val}san\n";

変数名のあとにアルファベットが続くときは{}でくくれば変数名の範囲を明示的にしていできる。
$ perl p10_4.pl
こんにちは鈴木さん
こんにちは
こんにちは鈴木san


例1.2.5 4つの文字列を変数の内容を1つのprint関数で表示。
$hello = "こんにちは";
$name = "太郎";
$title = "さん。";
$return = "\n";

print "$hello$name$title$return";

$ perl p11_5.pl
こんにちは太郎さん


例1.2.6 単一引用符のかわりに「q」を使って文字列を囲む
$quote = q/"こんにちは"'太郎'"さん。"/;
print "$quote\n"

$ perl p11_6.pl
"こんにちは"'太郎'"さん。


B>【練習問題】1.2 変数
・1 変数$nameにあなたの名前おいれて、改行するスクリプトを書きなさい。
・オレ回答 これは楽勝? 以下のスクリプトで
$name = "hagex";
print "$name\n";


・2 次のスクリプト実行するとどのような結果がでるか。
$hex = "\x2a";
$abc = "ABC";
$quote = '\n';
print "$hex$quote$abc\n";

・オレ回答 「\x2a」は文字コードで「*」を表す。「'\n'」は一瞬改行コードにみえるけど、「''」でくくってあるので、表記のままで出力。だから実行すると「*\nABC」じゃないかな。やってみると、
$ perl 1.2.2.pl
*\nABC

あ、正解。


・3 次のスクリプトを「Hello,Tarokun.」と表示されるように修正しなさい。
$hello = "Hello";
$name = "Taro";
print "$hello,$namekun\n";

・オレ回答 うーん、とりあえずこのスクリプトを実行するとどうなんだろう。
$ perl 1.2.3.pl
Hello,

後ろの$namekunが変数名として正しくないので、"$hello,$name.\n"としたらどうだろう
$ perl 1.2.3.pl
Hello,Taro.

と無事に出ました。


・4 次のスクリプトをqqを使って短く書きなさい。
print "二重引用符 \"\" は \\\"\\\" で示します。\"こんにちは\"\n";
これもとりあえず実行してみると
二重引用符 "" は \"\" で示します。"こんにちは"
つまり、「\"」は「"」で、「\\」は「¥」をあらわす。単一引用符は「q」二重引用符は「qq」なので、
print q/二重引用符 "" は \"\" で示します。"こんにちは"\n/;
で同じになるはず。
二重引用符 "" は \"\" で示します。"こんにちは"\n
あれ変だな? あ、qqじゃなくてqになっていた。修正すると
二重引用符 "" は "" で示します。"こんにちは"
と無事に出力できたよ。