Perl(書き込み)

Perlです。読み込みの後は書き込みです。

書き込みするファイルを開くのにもopenを使います。
open(ハンドラ,”>ファイル名”);

書き込みするには、
print ハンドラ 書き込む文字列;

使ってみます。

takk@deb9:~/pl$ cat write.pl
open(FH,">out.txt");

print FH "HELLO\n";

close(FH);

out.txtというファイルを作成してHELLOという文字列を書き込むスクリプトです。

実行結果です。

takk@deb9:~/pl$ ls
write.pl
takk@deb9:~/pl$ perl write.pl
takk@deb9:~/pl$ ls
out.txt  write.pl
takk@deb9:~/pl$ cat out.txt
HELLO
takk@deb9:~/pl$

次は、ファイル読み書きをしてファイルコピーするスクリプトです。

takk@deb9:~/pl$ cat read-write.pl
open(FH_IN,"<in.txt");
open(FH_OUT,">out.txt");

@a = <FH_IN>;
print FH_OUT @a;

close(FH_IN);
close(FH_OUT);

コピー元ファイルを作ります。

takk@deb9:~/pl$ seq 20 | pr -t4J > in.txt
takk@deb9:~/pl$ cat in.txt
1       6       11      16
2       7       12      17
3       8       13      18
4       9       14      19
5       10      15      20

実行してみます。

takk@deb9:~/pl$ perl read-write.pl
takk@deb9:~/pl$ cat out.txt
1       6       11      16
2       7       12      17
3       8       13      18
4       9       14      19
5       10      15      20
takk@deb9:~/pl$ diff in.txt out.txt
takk@deb9:~/pl$

コピーされました。

標準出力は、そのままprintするだけですね。

どうしてもハンドラを使いたいなら、STDOUTが使えます。

takk@deb9:~/pl$ cat stdout.pl
print STDOUT "HELLO\n";
takk@deb9:~/pl$ perl stdout.pl
HELLO
takk@deb9:~/pl$

標準エラー出力するには、STDERRを指定します。

takk@deb9:~/pl$ cat stderr.pl
print STDERR "HELLO\n";
takk@deb9:~/pl$ perl stderr.pl 1>/dev/null
HELLO
takk@deb9:~/pl$

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA