UTF8のBOMを取り除くスクリプト
30分プログラム、その554。UTF8のBOMを取り除くスクリプト。
BOMって邪魔ですよね。ASCIIしか書いてないファイルに、なぜか0xFEとか入ってるんですもん。何も考えずにcatでファイルを連結してると、途中にBOMが入ってしまって死にそうになる。
というわけで、これを取り除くスクリプトを書いてみよう。
ちなみにBOMの付けたい場合は、nkfを使うといいよ。
$ nkf -w8 non-bom.txt > bom.txt
使い方
$ perl bom-strip.pl bom.txt > non-bom.txt
ソースコード
#! /usr/bin/perl # -*- mode:perl; coding:utf-8 -*- # # bom-strip.pl - # # Copyright(C) 2009 by mzp # Author: MIZUNO Hiroki / mzpppp at gmail dot com # http://howdyworld.org # # Timestamp: 2009/03/27 21:36:51 # # This program is free software; you can redistribute it and/or # modify it under MIT Lincence. # use strict; use warnings; use Data::Dumper; use Encode; my $bom =encode('utf8',"\x{FEFF}"); sub strip($){ my ($path) = @_; open my $fh,'<',$path; my $buffer = join "",<$fh>; close $fh; if(substr($buffer,0,3) eq $bom){ substr($buffer,3); }else{ $buffer; } } foreach (@ARGV) { print strip($_); }