Perl/入出力・コマンドラインオプション
出典: フリー教科書『ウィキブックス(Wikibooks)』
< Perl
本項では、Perlの入出力とコマンドラインオプションについて解説する。
[編集] ファイルハンドル
Perlには、次に挙げる特殊なファイルハンドルが組み込まれている。
- STDIN
- 標準入力を表す。
- STDOUT
- 標準出力を表す。
- STDERR
- 標準エラー出力を表す。
- DATA
- __END__以降を表す。
ファイルハンドルから一行ずつ読み込むには、山カッコ演算子を用いる。
while (<STDIN>) {
print;
}
これは次のコードと等価である。
while (defined($_ = readline *STDIN)) {
print $_;
}
空のファイルハンドルを指定すると標準入力から読み込む。ただし、コマンドライン引数がある場合はそれをファイル名として解釈し、ファイルの内容を標準入力にパイプした上で、標準入力から読み込む。
while (<>) {
print;
}
ファイルハンドルに対して出力するには、print()の間接ファイルハンドル記法を用いる。
print STDOUT "Hello, world!\n";
ローカルファイルはopen()を呼び出してファイルハンドルに関連付けて操作する。
open my $fh, '<', 'hoge.txt'
or die $!;
my $line = <$fh>;
close $fh;
[編集] コマンドラインオプション
コマンドライン引数は、@ARGVという特殊な配列に代入される。サブルーチンの外で空引数のshift()を呼び出すと、shift(@ARGV)と解釈される。
my $arg = shift; print "第一引数は $arg です。";
[編集] 環境変数
特殊変数$/を指定すると入力レコードレパレータを変更することができる(デフォルトは\n)。次の例では、「hoge.txt」から一行ずつではなくすべての内容を一度に読み出す。
open my $fh, '<', 'hoge.txt'
or die $!;
my $content = do { local $/; <$fh> };
close $fh;