アットウィキロゴ

perl > stdin

標準入力


スカラ変数への代入

普通に使うと、改行も値に入るのでそこは注意。
$name = <STDIN>;
print "Your name is $name";
STDINを使わなくてもOK。これでも↑と同じ動きになる。
$name = <>;
print "Your name is $name";

chop と chomp

chopは、文字列の最後の文字を削除する。
$name = <STDIN>; # For example, input abc.
chop($name);
print $name, "\n"; # print abc;
chop($name);
print $name, "\n"; # print ab;
chompは、文字列の最後の文字が改行文字であった場合に削除を実施する。
$name = <STDIN>; # For example, input abc.
chomp($name);
print $name, "\n"; # print abc;
chomp($name);
print $name, "\n"; # print abc;

read

指定ファイルハンドルから読み込んで、バッファに値を格納する。
読み込んだバイト数 = read(ファイルハンドル, バッファ用変数, 読み込むバイト数);
例えば、
print "What's your name??\n"
$readsize = read(STDIN, $name, 10);
printf ("Your name is %s\n", $name);
printf ("Read size is $d\n", $readsize);
ちなみに読込量まで達しない状態で、入力を切るには、標準入力で Ctrl-Dが必要。

getc

指定したファイルハンドルから読み込んで、1文字だけ扱う。
print "Type 'y' or 'n': ";
$answer = getc;
if ($answer eq 'y') {
  print "Your answer is YES.\n";
} elsif ($answer eq 'n') {
  print "Your answer is NO.\n";
} else {
  print "Your answer is incorrect.\n";
}

配列への代入

スカラと変わらない感じで書く。
@lines = <STDIN>;
print @lines, "\n";
配列の要素としては、各行が1要素になる。このとき改行文字も含まれています。

タグ:

+ タグ編集
  • タグ:
最終更新:2011年07月17日 19:44