フォルダ内の全てのテキストファイルの改行コードをCRLFからLFへ

windowsで作ったテキストファイルは、改行コードを直さないといけないのだが。

#!/usr/local/bin/perl
use strict;
use Encode;
use warnings;
use utf8;
my $dir = shift; #対象ディレクト
$dir =~s[/?\Z][/];

opendir DIR, $dir or die;
my @textfiles = grep{/\.txt/}readdir DIR;

for (@textfiles){
open my $IN, '<', $dir.$_ or die;
my $data = do { local $/; <$IN> };
open my $OUT, '>', $dir.$_ or die;
$data =~s/\r//g;
print $OUT $data;
}

ほんとはbashでやりたかったのだが、ちょっと調べてもよく分かんなかったので。ワンライナーでもできそうだったけど、素人コーダとしてはこんなもんだろ。

こんな感じで動く。このファイルが、対象フォルダにあると仮定して、

perl this_script.pl ./

危ないのでバックアップとってから使ってください。