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$
コメント
[…] ← Perl(読み込み1) […]