Perl入門   No.10


4.7 入出力
 
4.7.1 標準入出力
 
コンピュータに何かをさせるには、人間側がコンピュータ(プログラム)にデータを送らなければなりません。当たり前の説明ですが、通常はキーボードという入力専用装置を使って送っています。またその結果を人間に示さなければなりません。これも当たり前のことですが、モニター(ディスプレイ)にその結果を送って示しています。しかしこれは完成されたシステムで行っているので当たり前のように見えますが、実は内部では複雑な処理をしているのです。
 
Perlでは、この処理を<STDIN>というファイルハンドルに任せています。ファイルハンドルというのは、プログラムが理解する入出力の対象だと理解しておいてください。コンピュータの中では、ディスプレイもプリンターもキーボードもみんな同じ認識です。そこで人間がどこからデータが入ってくるのだよとか出力先はどこだよと指定してやらなければ、コンピュータは困ります。その具体的な対象をコンピュータに教えるのがフィルハンドルです。
入力専用として、<STDIN> (文字は全て大文字です。)
出力専用として、<STDOUT>
エラー処理として、<STDERR>
コマンドライン上から読みとるものに、ARGV
といったものが用意されています。
 
画面に出力するものは、すでに使っています。
 
print 文です。
書式付きのものも登場しましたね。
printf("%s",変数名)
 
具体的に、キーボードから文字を入力して、画面に出すプログラムを作りましょう。
#!/usr/bin/perl

print "何でもかまいませんから文字を入力してください: ";
$answer = <STDIN>;
print $answer;
 
出来たでしょうか。
 
現在のWindowsパソコンではほとんどその操作はなくなりましたが、UNIXなどでは、コマンドラインから一気にデータも入力するという方が便利であり、よく使われています。
例えば、
%mule test.txt
 
といった具合です。この2番目に入力する文字列を引数と言っています。Perlで引数を使って入力する場合は、ファイルハンドル ARGV を使います。これはそれ自身で配列になっています。
試しに、こんなプログラムを書いてみましょう。
#!/usr/bin/perl

print @ARGV[0];
 
何をするかもうおわかりでしょう。配列の0番目を標準出力しなさいということです。このプログラムのファイルをtest.plとして、パーミッションをu + x とします。
%perl.pl test
 
とすると、「test」という文字列が帰ってくるのがわかるでしょう。先ほどの問い合わせ形式と同じことをしているわけです。