入力の基礎
変数に値を入力する
これまで変数に値を代入するときには $var = 10; というようにプログラマが直接指定していました
しかし、たとえばユーザーの年齢を変数に格納したい場合は、プログラマがそれを予想するのは不可能です
もちろんプログラムを実行するユーザーによっても年齢は異なります
このような場合は、ユーザーに直接入力してもらうのが一番ですね
スカラー変数に対してユーザーが入力した値を代入するには以下のように <STDIN> を使用します
$var = <STDIN>
このようにスクリプトを記述すれば、この部分にプログラムが達した時にプログラムは一度停止してユーザーに入力を求めます
ユーザーがEnterキーを押した時点でプログラムは変数に入力された内容を代入して次へ進みます
では、入門書などでもありがちな名前の入力プログラムを作ってみましょう
print "あなたの名前を教えてください\n";
$your_name = <STDIN>;
print $your_name;
$your_name = <STDIN>;間でプログラムが実行されると、そこでユーザーに入力を求めます
Enterキーが押されればその時点で変数に内容が代入されます
しかし、これだけでは淋しいから print "&your_nameさんですね"; というように応答しようとします
つまり
print "あなたの名前を教えてください\n";
$your_name = <STDIN>;
print "あなたの名前は$your_nameさんですね";
というようにします
しかしここで大きな問題が発生します
たとえばleonと入力したとすると、最後のprint部分で以下のように出力されてしまいます
あなたの名前はleon
さんですね
なんと改行されています
これはEnterキーを押したときに改行コードも代入されるためです
これは防ぐにはchompという命令を使います(正確に言うとprintやchompなどは関数といいますが、今はわからなくていいです)
chomp(改行コードを消したい変数) という書き方をします
print "あなたの名前を教えてください\n";
$your_name = <STDIN>;
chomp($your_name);
print "あなたの名前は$your_nameさんですね";
chompを使えば変数の末尾の改行文字を削除することができます
$var = <STDIN>
$var変数に入力された値を代入します
chomp($var)
$var変数の内容の末尾にある改行コードを削除します