メインメニューを開く

Perl/入出力・コマンドラインオプション

< Perl
プログラミング > 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;
このページ「Perl/入出力・コマンドラインオプション」は、書きかけです。加筆・訂正など、協力いただける皆様の編集を心からお待ちしております。また、ご意見などがありましたら、お気軽にノートへどうぞ。