Perl(読み込み1)

Perlでテキスト読み込みします。
入門書ではPerlのテキスト読み込みは<>から入るのが王道かもしれませんが、
初めてPerlを使う人はいきなり<>から入ると、理解するのに時間がかかると思うんです。
なので、ファイルオープンから始めます。

ファイルの読み込み。ファイル名を指定してテキストを読み込むには、openを使ってファイルハンドラを取得します。

“”でファイル名を指定しますが、読み込みの場合は”<ファイル名"、書き込みは">ファイル名”となります。

takk@deb9:~/pl$ cat open-read-close.pl
open(FH,"<in.txt");

$text = <FH>;
print $text;

close(FH);

takk@deb9:~/pl$

ファイルをオープンして、一行だけ読み込んで表示するスクリプトです。

読み込むファイルも作りましょう。

takk@deb9:~/pl$ seq 101 105 > in.txt
takk@deb9:~/pl$ cat in.txt
101
102
103
104
105
takk@deb9:~/pl$

実行するとファイルの最初の一行が表示されます。

takk@deb9:~/pl$ perl open-read-close.pl
101
takk@deb9:~/pl$ 

を変数へ代入する度に次の行が読み込まれます。

takk@deb9:~/pl$ cat read6.pl
open(FH,"<in.txt");

$text = <FH>; print $text;
$text = <FH>; print $text;
$text = <FH>; print $text;
$text = <FH>; print $text;
$text = <FH>; print $text;
print "undef\n" unless(defined $text);
$text = <FH>; print $text;
print "undef\n" unless(defined $text);

close(FH);

takk@deb9:~/pl$ perl read6.pl
101
102
103
104
105
undef
takk@deb9:~/pl$

読み込む行がないと$text変数にはundefが入りますので、
全行を読み込むにはwhileを使えます。

takk@deb9:~/pl$ cat read-while.pl
open(FH,"<in.txt");

while($text = <FH>){
        print $text;
}

close(FH);

takk@deb9:~/pl$ perl read-while.pl
101
102
103
104
105
takk@deb9:~/pl$

$textという変数に読み込みしていますが、デフォルト変数($_)が使えます。
$_を使うとスクリプトを簡潔に書くことができます。

takk@deb9:~/pl$ cat read.pl
open(FH,"<in.txt");

while(<FH>){
        print $_;
}

close(FH);

takk@deb9:~/pl$ perl read.pl
101
102
103
104
105
takk@deb9:~/pl$

配列を使えばファイルの全行を一括取得することができます。

takk@deb9:~/pl$ cat read-all.pl
open(FH,"<in.txt");

@all = <FH>;

print @all;

close(FH);

takk@deb9:~/pl$ perl read-all.pl
101
102
103
104
105
takk@deb9:~/pl$

コメント

  1. […] ← Perl(読み込み1) […]

タイトルとURLをコピーしました