Perl/Perlの基礎知識

Perl でファイルの中身を変更する(4ページ目)

Perl でファイルを開き、変更し、保存する方法を覚えます。

井上 みやび子

執筆者:井上 みやび子

Perlガイド

ファイルの出力

さて、ファイルの入力が分かったら、ファイルの出力は「開く方向」を変えればいいだけです。

下のサンプルプログラムを打ち込んで下さい。つまらないですが、練習のために、入力と同じ内容のファイルを出力するプログラムです。
#Perl ファイル入力と出力両方を行うプログラム

use strict;
use warnings;
use utf8;
binmode STDOUT, 'encoding(utf8)'; #Windows の場合は utf8 -> cp932

my ($fh, $fh2);
open ($fh, '<:encoding(cp932)', 'text01.txt')
or die "ERROR: open: text01.txt: $!\n"
;

open ($fh2, '>:encoding(cp932)', 'text01_copied.txt')
or die "ERROR: open: text01_copied.txt: $!\n"
;
while(<$fh>){ print $fh2 $_; } close $fh; close $fh2;
ファイル出力のポイントとなるのは以下の2点です。

「>」を指定してファイルを open

my ($fh, $fh2);
(省略) 
open ($fh2, '>:encoding(cp932)', 'text01_copied.txt')
or die "ERROR: open: text01_copied.txt: $!\n"
;
このプログラムではファイルの入力と出力を両方行いますので、2つファイルハンドルを定義します。2つ目は書き出し用ですので、開く方向として「>」を指定しています。ファイル名は、入力用のものとは別に指定します。

print の書き出し先を指定する

もう一つのポイントは、書き出しの部分です。

「>」を指定して作成したファイルハンドル $fh2 は「出力用ファイルハンドル」となり、先ほどの「<$fh>」のような入力はできません。その代り、出力の時に利用する事ができます。

画面出力を行っていた最初のプログラムでは「while(<$fh>)」の後で
print $_;
となっていた部分が、今度のプログラムでは
print $fh2 $_;
となっていますね。

これが、上の open で開いたファイル text01_copied.txt に書き出せという指定です。「出力用ファイルハンドル」は、print と組み合わせて書き出し先のファイルを指定するために使います。

さてこれで、ファイル入出力の基本は終了です。上のプログラムを実行して、同じ内容で text01_copied.txt が書き出されたかをテストして下さい。

>次は:文字コードの種類
  • 前のページへ
  • 1
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます