#!/usr/local/bin/perl $a = <>; # 標準入力から 1 行読み 変数 $a に代入します。 print $a; # $a を印刷します。
soot12% chmod +x p2-0.pl <== 実行可能にします。 soot13% p2-0.pl <== 実行します。 test <== 標準入力 から test といれます。 test <== 標準出力 に test と表示されました。 soot14%
注: test の後に改行されず、testsoot14% のようになる場合 もあります。そのときは、print $a,"\n"; と改行 (\n) も "" で 挟んで印刷してみてください。"\n" でなく '\n' だと \n をそのまま 印刷されてしまいますので、"" で挟んでくださいね。
#!/usr/local/bin/perl while(<>) { # 標準入力から入力がなくなるまで { 以下のことをせよ。 print; # 入力の内容を印刷します。 } # } の終了
キーボード入力の代わりに file として、p2-1.dat という file を つくってそこに、適当な内容を書き込みます。標準入力かわりに、 Unix の リダイレクション を使って、
% p2-1.pl < p2-1.dat
とすると、キーボード入力の代わりに p2-1.dat の内容を入力して、出力します。
Perl では、暗黙の変数 $_ というものが使われます。ここで print; とは暗黙の変数を印刷する、即ち print $_; のことなので す。では $_ がどこで設定されるかというと、p2-1.pl の場合には while(<>) で 入力が存在した場合に、while で $_ が設定される のです。while(<>) を 省略しないで書くと、while($_ = <>) ( 標 準入力 <> を $_ に代入することが真(代入できる) である限り) になります。
他動詞となるコマンド (print, shift 等) で 目的語となる 変数 がない場合には、常に暗黙の変数 $_ があると理解して下さい。な れてくると、通常の言葉( 例えば「買ってきました。」とか、「印 刷しています。」) と同じで省略した方が便利な場合が多いです。