ユーザ入力
スカラコンテキストで受ける
chomp($line = <STDIN>)
リストコンテキストで受ける
chomp(@lines = <STDIN>)
入力を終了するにはCtrl-D(WinではCtrl-z)
ユーザからの応答読み取り
ユーザからの応答読み取り
print STDOUT "Enter a number: "; # 数の入力を促す chop($number = <STDOUT>) # 数を読み込む(改行文字の除去) print STDOUT "The number is $number.\n"; # その数を表示する
chopは文字列の末尾の文字を無条件で削除する(そして削除した文字を返す)
chompはレコード終了マーカを削除する(そして削除した文字の個数を返す)
ファイル入出力
ファイルのオープンとクローズは以下の記述で可能。
open(IN, "sample.txt"); 〜ファイル処理〜 close(IN);
sample.txtを読み込み用としてオープンしている。以下のINはファイルハンドル名で任意名。
オープンモード
open関数では、入力・出力・パイプのファイルハンドルを作成できる。すでにオープンされているファイルハンドルをオープンした場合、オープンされているファイルを暗黙のうちにクローズしてアクセスできないようにしてから新しいファイルがオープンされる。
open(HANDLE, "filename"); # 既存ファイルから読み込み open(HANDLE, "<filename"); # 同上 open(HANDLE, ">filename"); # 新規作成して書き込み open(HANDLE, ">>filename");# 追加書き込み open(HANDLE, "| command"); # 出力フィルタ open(HANDLE, "command |"); # 入力フィルタ
ファイル読み込み処理
以下のファイルを読み込み対象とすると、
sample.txt 1:first 2:second 3:third
スカラへ1行読み込み
#!/usr/bin/perl open(IN, "sample.txt"); $line = <IN>>; close(IN); print $line;
出力結果
1:first
配列へ読み込み
#!/usr/bin/perl open(IN, "sample.txt"); @array = <IN>; close(IN); print @array;
出力結果
1:first 2:second 3:third
#!/usr/bin/perl open(IN, "sample.txt"); while (<IN>) { print; } # while ($_ = <IN>) { print $_; } と同意 close(IN);
出力結果
1:first 2:second 3:third
オープン時のエラートラップ
open ( IN, "filename") || die "Can't open file \n";