結局こんなんになりました。BOM を取るのもやろうとおもっていたけど、もたもたスクリプトをかいてるあいだにエディタで再保存までやってもらっちゃってそこ不要になってしまったので、チェッカーのみで。 pack とか unpack とかいつまでたっても上手に使えるようになる気がしない。
#!/usr/local/bin/perl # $Id$ use strict; use File::Find; use IO::File; my @dir = shift || "."; find(sub { if (-f $_) { my $fh = IO::File->new; $fh->open($_); my $str = do { local $/; <$fh>; }; if (is_bomed($str)) { print "$File::Find::name is BOMed!\n"; } $fh->close; } }, @dir); sub is_bomed { my $str = shift; my $hexstr = unpack("H*", $str); return $hexstr =~ /^efbbbf/; } __END__ =encoding utf-8 =for stopwords =head1 NAME bom.pl - BOM つきファイルをリストアップするスクリプト =head1 SYNOPSIS ./bom.pl /path/to/tmpl/dir =head1 DESCRIPTION =head1 AUTHOR Kensuke Kaneko E<lt>k-kaneko@livedoor.jpE<gt> =head1 LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 SEE ALSO =cut