ルモーリン

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

投稿:2019-02-17

このツイートを見て。
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と同じになるのを確認しました。
本日は晴天なり
たこルカは俺の嫁