標準入力からの値の取得

Perl のプログラムを実行中に、ユーザーに値を入力してもらい、プログラムの中で利用することができます。ここでは Perl のプログラムで標準入力を使ってユーザーに入力したもらった値を取得する方法について解説します。

(Last modified: )

標準入力からの値の取得

Perl のプログラムを実行後にユーザーからキーボードを使って値を入力してもらうことができます。プログラム実行中に何らかの入力を行うには行入力演算子の <> 演算子を使用します。

変数 = <ファイルハンドル>

上記では指定したファイルハンドルから 1 行読み込んで変数に格納します。改行文字が現れるまでの値が 1 行です。

ファイルハンドルは、現在開いているファイルを識別するためのものです。今回はファイルからの読み込みではなく標準入力のキーボードから値を読み込みます。キーボードからの入力を行うには特別なファイルハンドルである STDIN を使用します。

変数 = <STDIN>

プログラムの中で上記のように記述すると、 Enter キーが押されるまでキーボードから入力された文字を変数に格納します。この時、 Enter キーも改行として合わせて取得します。

例えば次のように記述します。

my $line = <STDIN>;
print "入力された値 : $line";

このように記述すると、プログラムの実行中にこの部分に差し掛かるといったんプログラムの実行が中断し、キーボードからの入力待ちとなります。ユーザーがキーボードから値を入力して Enter キーを押すと入力された値が変数に格納されて次の行からプログラムが再開します。

なおキーボードから入力された値には改行が含まれています。改行を取り除くには chomp 関数を使用します。( chomp 関数については「chomp関数:文字列の末尾の改行文字を削除する」を参照して下さい)。

my $line = <STDIN>;
chomp($line);
print "入力された値 : $line";
サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

print "名前を入力して下さい\n";
my $line = <STDIN>;
chomp($line);

print "成績を入力して下さい\n";
my $seiseki = <STDIN>;
chomp($seiseki);

print "名前:$line, 成績:$seiseki\n";

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

標準入力からの値の取得(1)

プログラムを実行すると、名前の入力を求められます。名前を入力してから「Enter」キーを押して下さい。

標準入力からの値の取得(2)

次に成績の入力を求められます。成績の値を入力してから「Enter」キーを押して下さい。

標準入力からの値の取得(3)

入力された値を画面に表示して終了します。このように標準入力から入力された値を取得してプログラムの中で利用することができます。

-- --

Perl のプログラムで標準入力を使ってユーザーに入力したもらった値を取得する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。