ルモーリン
ホーム 更新 Perl ランドナー サービス 雑談 コースガイド 鉄ゲタ 自転車 Linux リンク 連絡先

Linuxで改行がCRLFのファイルを読み書き

2019-02-17

きっかけ

このツイートを見て。

Perlにおんぶに抱っこしてみる

open関数のファイルモードに、ファイルの仕様を指定すると色々と面倒をみてくれるのでそれに頼ってみよう。
Perlの組み込み関数 open の翻訳 - perldoc.jp

コード

#!/usr/bin/env perl -w

use utf8;
use strict;
use warnings;

use Encode::Locale;

use feature "say";

binmode STDIN, ":encoding(console_in)";
binmode STDOUT, ":encoding(console_out)";

$| = 1;

my @line;
if (open my $fh, "< :utf8 :crlf", "sample_69_in.txt") {
	while (<$fh>) {
		chomp;
		say;
		push @line, $_;
	}

	close $fh;
}

if (open my $fh, "> :utf8 :crlf", "sample_69_out.txt") {
	for (@line) {
		say $fh $_;
	}

	close $fh;
}

実行結果

入力ファイルのsample_69_in.txtはutf8で改行コードはCRLFです。出力ファイルsample_69_out.txtが入力と同サイズ、LinuxでもWindowsと同じになるのを確認しました。
本日は晴天なり
たこルカは俺の嫁