view release on metacpan or search on metacpan
package File::Find::Rule::BOM;
use base qw(File::Find::Rule);
use strict;
use warnings;
use String::BOM qw(file_has_bom);
our $VERSION = 0.03;
# Detect BOM.
sub File::Find::Rule::bom {
my $file_find_rule = shift;
return _bom($file_find_rule);
}
# Detect UTF-8 BOM.
sub File::Find::Rule::bom_utf8 {
my $file_find_rule = shift;
return _bom($file_find_rule, 'UTF-8');
}
# Detect UTF-16 BOM.
sub File::Find::Rule::bom_utf16 {
my $file_find_rule = shift;
return _bom($file_find_rule, 'UTF-16');
}
# Detect UTF-32 BOM.
sub File::Find::Rule::bom_utf32 {
my $file_find_rule = shift;
return _bom($file_find_rule, 'UTF-32');
}
sub _bom {
my ($file_find_rule, $concrete_bom) = @_;
my $self = $file_find_rule->_force_object;
return $self->file->exec(sub{
my $file = shift;
1;
__END__
=pod
=encoding utf8
=head1 NAME
File::Find::Rule::BOM - Common rules for searching for BOM in files.
=head1 SYNOPSIS
use File::Find::Rule;
use File::Find::Rule::BOM;
my @files = File::Find::Rule->bom->in($dir);
my @files = File::Find::Rule->bom_utf8->in($dir);
my @files = File::Find::Rule->bom_utf16->in($dir);
my @files = File::Find::Rule->bom_utf32->in($dir);
=head1 DESCRIPTION
This Perl module contains File::Find::Rule rules for detecting Byte Order Mark
in files.
BOM (Byte Order Mark) is a particular usage of the special Unicode character,
U+FEFF BYTE ORDER MARK, whose appearance as a magic number at the start of a
text stream can signal several things to a program reading the text.
See L<Byte order mark on Wikipedia|https://en.wikipedia.org/wiki/Byte order mark>.
=head1 SUBROUTINES
=head2 C<bom>
my @files = File::Find::Rule->bom->in($dir);
The C<bom()> rule detect files with BOM.
=head2 C<bom_utf8>
my @files = File::Find::Rule->bom_utf8->in($dir);
The C<bom_utf8()> rule detect files with UTf-8 BOM.
=head2 C<bom_utf16>
my @files = File::Find::Rule->bom_utf16->in($dir);
The C<bom_utf16()> rule detect files with UTF-16 BOM.
=head2 C<bom_utf32>
my @files = File::Find::Rule->bom_utf32->in($dir);
The C<bom_utf32()> rule detect files with UTF-32 BOM.
=head1 EXAMPLE1
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
# Arguments.
if (@ARGV < 1) {
print STDERR "Usage: $0 dir\n";
exit 1;
}
my $dir = $ARGV[0];
# Print all files with BOM in directory.
foreach my $file (File::Find::Rule->bom->in($dir)) {
print "$file\n";
}
# Output like:
# Usage: qr{[\w\/]+} dir
=head1 EXAMPLE2
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
# Arguments.
if (@ARGV < 1) {
print STDERR "Usage: $0 dir\n";
exit 1;
}
my $dir = $ARGV[0];
# Print all files with UTF-8 BOM in directory.
foreach my $file (File::Find::Rule->bom_utf8->in($dir)) {
print "$file\n";
}
# Output like:
# Usage: qr{[\w\/]+} dir
=head1 EXAMPLE3
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
# Arguments.
if (@ARGV < 1) {
print STDERR "Usage: $0 dir\n";
exit 1;
}
my $dir = $ARGV[0];
# Print all files with UTF-16 BOM in directory.
foreach my $file (File::Find::Rule->bom_utf16->in($dir)) {
print "$file\n";
}
# Output like:
# Usage: qr{[\w\/]+} dir
=head1 EXAMPLE4
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
# Arguments.
if (@ARGV < 1) {
print STDERR "Usage: $0 dir\n";
exit 1;
}
my $dir = $ARGV[0];
# Print all files with UTF-32 BOM in directory.
foreach my $file (File::Find::Rule->bom_utf32->in($dir)) {
print "$file\n";
}
# Output like:
# Usage: qr{[\w\/]+} dir
=head1 DEPENDENCIES
L<File::Find::Rule>,
L<String::BOM>.
=head1 SEE ALSO
=over
=item L<File::Find::Rule>
Alternative interface to File::Find.
=back
=head1 REPOSITORY
L<https://github.com/michal-josef-spacek/File-Find-Rule-BOM>
=head1 AUTHOR
Michal Josef Å paÄek L<mailto:skim@cpan.org>
L<http://skim.cz>
=head1 LICENSE AND COPYRIGHT
© Michal Josef Å paÄek 2015-2021
BOM.pm
Changes
examples/ex1.pl
examples/ex2.pl
examples/ex3.pl
examples/ex4.pl
inc/Module/Install.pm
inc/Module/Install/AuthorRequires.pm
inc/Module/Install/AuthorTests.pm
inc/Module/Install/Base.pm
inc/Module/Install/Can.pm
LICENSE
Makefile.PL
MANIFEST This list of files
META.yml
README
SIGNATURE
t/data/UTF_16_bom
t/data/UTF_32_bom
t/data/UTF_8_bom
t/data/without_bom
t/File-Find-Rule-BOM/01-use.t
t/File-Find-Rule-BOM/02-version.t
t/File-Find-Rule-BOM/03-bom.t
t/File-Find-Rule-BOM/04-bom_utf8.t
t/File-Find-Rule-BOM/05-bom_utf16.t
t/File-Find-Rule-BOM/06-bom_utf32.t
xt/File-Find-Rule-BOM/01-pod_coverage.t
xt/File-Find-Rule-BOM/02-pod.t
---
abstract: 'Common rules for searching for BOM in files.'
author:
- 'Michal Josef Spacek <skim@cpan.org>'
build_requires:
ExtUtils::MakeMaker: 6.36
File::Object: 0.08
Test::More: 0
Test::NoWarnings: 0
configure_requires:
ExtUtils::MakeMaker: 6.36
distribution_type: module
dynamic_config: 1
generated_by: 'Module::Install version 1.19'
license: bsd
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: 1.4
name: File-Find-Rule-BOM
no_index:
directory:
- examples
- inc
- t
- xt
requires:
File::Find::Rule: 0
String::BOM: 0
perl: 5.6.2
resources:
bugtracker: https://github.com/michal-josef-spacek/File-Find-Rule-BOM/issues
homepage: https://github.com/michal-josef-spacek/File-Find-Rule-BOM
license: http://opensource.org/licenses/bsd-license.php
repository: git://github.com/michal-josef-spacek/File-Find-Rule-BOM
version: '0.03'
Makefile.PL view on Meta::CPAN
use lib '.';
use strict;
use warnings;
use inc::Module::Install;
# Definition.
abstract 'Common rules for searching for BOM in files.';
author 'Michal Josef Spacek <skim@cpan.org>';
author_requires 'English' => 0;
author_requires 'File::Object' => 0.08;
author_requires 'Test::More' => 0;
author_requires 'Test::NoWarnings' => 0;
author_requires 'Test::Pod' => 0;
author_requires 'Test::Pod::Coverage' => 0;
license 'bsd';
name 'File-Find-Rule-BOM';
readme_from 'BOM.pm';
recursive_author_tests('xt');
requires 'String::BOM' => 0;
requires 'File::Find::Rule' => 0;
requires 'perl' => '5.6.2';
resources 'bugtracker' => 'https://github.com/michal-josef-spacek/File-Find-Rule-BOM/issues';
resources 'homepage' => 'https://github.com/michal-josef-spacek/File-Find-Rule-BOM';
resources 'repository' => 'git://github.com/michal-josef-spacek/File-Find-Rule-BOM';
test_requires 'File::Object' => 0.08;
test_requires 'Test::More' => 0;
test_requires 'Test::NoWarnings' => 0;
tests_recursive;
version '0.03';
# Run.
WriteAll();
NAME
File::Find::Rule::BOM - Common rules for searching for BOM in files.
SYNOPSIS
use File::Find::Rule;
use File::Find::Rule::BOM;
my @files = File::Find::Rule->bom->in($dir);
my @files = File::Find::Rule->bom_utf8->in($dir);
my @files = File::Find::Rule->bom_utf16->in($dir);
my @files = File::Find::Rule->bom_utf32->in($dir);
DESCRIPTION
This Perl module contains File::Find::Rule rules for detecting Byte
Order Mark in files.
BOM (Byte Order Mark) is a particular usage of the special Unicode
character, U+FEFF BYTE ORDER MARK, whose appearance as a magic number at
the start of a text stream can signal several things to a program
reading the text.
See Byte order mark on Wikipedia.
SUBROUTINES
"bom"
my @files = File::Find::Rule->bom->in($dir);
The "bom()" rule detect files with BOM.
"bom_utf8"
my @files = File::Find::Rule->bom_utf8->in($dir);
The "bom_utf8()" rule detect files with UTf-8 BOM.
"bom_utf16"
my @files = File::Find::Rule->bom_utf16->in($dir);
The "bom_utf16()" rule detect files with UTF-16 BOM.
"bom_utf32"
my @files = File::Find::Rule->bom_utf32->in($dir);
The "bom_utf32()" rule detect files with UTF-32 BOM.
EXAMPLE1
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
# Arguments.
if (@ARGV < 1) {
print STDERR "Usage: $0 dir\n";
exit 1;
}
my $dir = $ARGV[0];
# Print all files with BOM in directory.
foreach my $file (File::Find::Rule->bom->in($dir)) {
print "$file\n";
}
# Output like:
# Usage: qr{[\w\/]+} dir
EXAMPLE2
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
# Arguments.
if (@ARGV < 1) {
print STDERR "Usage: $0 dir\n";
exit 1;
}
my $dir = $ARGV[0];
# Print all files with UTF-8 BOM in directory.
foreach my $file (File::Find::Rule->bom_utf8->in($dir)) {
print "$file\n";
}
# Output like:
# Usage: qr{[\w\/]+} dir
EXAMPLE3
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
# Arguments.
if (@ARGV < 1) {
print STDERR "Usage: $0 dir\n";
exit 1;
}
my $dir = $ARGV[0];
# Print all files with UTF-16 BOM in directory.
foreach my $file (File::Find::Rule->bom_utf16->in($dir)) {
print "$file\n";
}
# Output like:
# Usage: qr{[\w\/]+} dir
EXAMPLE4
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
# Arguments.
if (@ARGV < 1) {
print STDERR "Usage: $0 dir\n";
exit 1;
}
my $dir = $ARGV[0];
# Print all files with UTF-32 BOM in directory.
foreach my $file (File::Find::Rule->bom_utf32->in($dir)) {
print "$file\n";
}
# Output like:
# Usage: qr{[\w\/]+} dir
DEPENDENCIES
File::Find::Rule, String::BOM.
SEE ALSO
File::Find::Rule
Alternative interface to File::Find.
REPOSITORY
<https://github.com/michal-josef-spacek/File-Find-Rule-BOM>
AUTHOR
Michal Josef Å paÄek <mailto:skim@cpan.org>
<http://skim.cz>
LICENSE AND COPYRIGHT
© Michal Josef Å paÄek 2015-2021
BSD 2-Clause License
% cpansign -v
It will check each file's integrity, as well as the signature's
validity. If "==> Signature verified OK! <==" is not displayed,
the distribution may already have been compromised, and you should
not run its Makefile.PL or Build.PL.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160
SHA256 9356071db67c72a70fedcadb99bf18237c417f9eb7a40043f53a0e987f7c6c90 BOM.pm
SHA256 83b1092e58ba9fb5e3f5d9aabc22ab20f4700b3f822ba906bfb80ede908594aa Changes
SHA256 c2243e443d7ce9cdb60d55bb0c5e22f7774e9b378665661108b5300faebcce0d LICENSE
SHA256 67d6e2bac6c1ded1d3c960dd2db1aa2bfbdae4b75299058f64bbf7b068368506 MANIFEST
SHA256 b49e0cf5cfdddfa7994e1dc01f85583b52e78b8656e5cba76a3908d096661993 META.yml
SHA256 9fb1c03556c1e72785e6199906c52856d118fd1508a9d626982e62002c7d357f Makefile.PL
SHA256 6dacdd4ea624bfcbde40310585406ba235d9fd253d3a33a43b9a570ea9831325 README
SHA256 6477dbba7245719d88ab0825cceb2ea65eb356c1b543814d42e7e16e25a5965a examples/ex1.pl
SHA256 1bf137689458977a39db965f61a1113258ff8614647ae50f3b931787b594c9d1 examples/ex2.pl
SHA256 eb1d98b7d557e284a21e05c193e5864253760062d9e8f00d488b13fae8143828 examples/ex3.pl
SHA256 cf4611e3b004b428d628df054b334014772fd19efa686ac0144884962ade1359 examples/ex4.pl
SHA256 8bd506c33fb78f10f6451413e931ca23541fcc4eebe05fcb7c7c9577341223c4 inc/Module/Install/AuthorRequires.pm
SHA256 1b5430a46a35142ef8914d8c745196fca825defc9dfa7e389299bf294613825e inc/Module/Install/AuthorTests.pm
SHA256 6ebcc53a161dd5dc0aae69e4704575f2b00181901d768a82e26722a309cfdbe4 inc/Module/Install/Base.pm
SHA256 d3f8c839d03fd21c197d05362dbb277cd7cadb15da6390d124b61e851f15146e inc/Module/Install/Can.pm
SHA256 e9e72e18921c10c87bc4ea4c20af83e52015b9f5775d00ac64073042403717ca inc/Module/Install/Fetch.pm
SHA256 a7a681bf2c9eee58a372cb642ffe42b0301d1200432ba8de9f7791cd1ecc9827 inc/Module/Install/Makefile.pm
SHA256 aa887fa65a5eb6bbd1805706ce298b3f3cd55b353ecfd37aa7d35ae419331a49 inc/Module/Install/Metadata.pm
SHA256 53825bc78e4c910b888160bc148c8bc211be58e02b99c8edcbf4854f95faa049 inc/Module/Install/ReadmeFromPod.pm
SHA256 26b166ff62aacdb55317d1659f160aa4935097eea9810ea980e6d747206b5dc0 inc/Module/Install/Win32.pm
SHA256 5f73a6851a91ea44e65b924f918743ad6e860620ad7a38a39d0295e0c5652a9f inc/Module/Install/WriteAll.pm
SHA256 306ef21c3ecf8ccd33213a18d387fa43af6904dedad96e75b0f660e504af1c8e t/File-Find-Rule-BOM/01-use.t
SHA256 26ad470a17822fbcf4e2dad6438866ea3e854486eb51681f0a83f4ab5b049e34 t/File-Find-Rule-BOM/02-version.t
SHA256 c3b35766004731cd174ea240ad612a3ad2911c28c5f7e830f346bbc0c487e011 t/File-Find-Rule-BOM/03-bom.t
SHA256 68c8a97bc3cc31719e837916e81e55e57e17652fe0e8270f431fc594ef7c1e14 t/File-Find-Rule-BOM/04-bom_utf8.t
SHA256 b774c7cdeb09cea230db8a29ad1df1cb925b4c632ed8f4546acd5afe331f929c t/File-Find-Rule-BOM/05-bom_utf16.t
SHA256 a380e9dd35d35d3997245fb9d59c88d91ad01569219fe25e21f9b37e6462ffaa t/File-Find-Rule-BOM/06-bom_utf32.t
SHA256 584922887a9a18737e833a685296111e6a5e9768f40c129e458c723f415508ac t/data/UTF_16_bom
SHA256 0dabb488d5e5d0132bae50dd37bcd3ade449fb890c49ab829e1a9636a4746e73 t/data/UTF_32_bom
SHA256 cece8d6cf996a6c545c66384762d96a7268668a378bbbf7c136c86da3871fce7 t/data/UTF_8_bom
SHA256 14c5e74c4b96ccef41cd94db73a9ec3348038ac094feca4fd897cecffa07cdae t/data/without_bom
SHA256 c4685b3c411929a78ed661a976cde9adc8016f6a41f4602bef9546aacc460fb4 xt/File-Find-Rule-BOM/01-pod_coverage.t
SHA256 ca499a12577e5e314267fd63d8746577f7e752452436351a08e89eb79f78f8c3 xt/File-Find-Rule-BOM/02-pod.t
-----BEGIN PGP SIGNATURE-----
iQGzBAEBAwAdFiEERTLc1QTxqWhVvPeegmqNLzlXaRcFAmARKdkACgkQgmqNLzlX
aRepJQwAt0i0dBrQ8vYArReLnw7B8zWE/4XbAiIGwMy9kFstAP8mltfQkrwYQ73M
GKu9AtVVAFu7ZESRk0NWPoa9MQL2YEsvr7h0v5HU/Yw9yIy+gLDKAJ6FdN0t3h2b
xVw6XBRT1XTw8ZNu4TdkahcY4nNJkcY2XCA96udeJP2xszpVDeTmjarQilf8XsNR
qYJs6F0Kc8IYJMHcVXxhkf1DlYefFCCCgM/uRuUPRkL2fEcdJnYvWzYRxLjGOAwl
LUZW1pUre5SS/g6rC46VCYG2u4PKeiZYc3M8Eg++xW6+3uxfJA6aWtS2C90SJGiq
x4NML/amoNLDuLqrAmIdkuH6US//hJwOL20prBA9efOUDFL6RRjV40Zmksq6ch6q
0PHfHD05xdp20FBnt9UVxNJ/jr1Dx1YCRVQBJJLIF8MkxdQ12JKN/ldoa0P9po/Z
examples/ex1.pl view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
# Arguments.
if (@ARGV < 1) {
print STDERR "Usage: $0 dir\n";
exit 1;
}
my $dir = $ARGV[0];
# Print all files with BOM in directory.
foreach my $file (File::Find::Rule->bom->in($dir)) {
print "$file\n";
}
# Output like:
# Usage: qr{[\w\/]+} dir
examples/ex2.pl view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
# Arguments.
if (@ARGV < 1) {
print STDERR "Usage: $0 dir\n";
exit 1;
}
my $dir = $ARGV[0];
# Print all files with UTF-8 BOM in directory.
foreach my $file (File::Find::Rule->bom_utf8->in($dir)) {
print "$file\n";
}
# Output like:
# Usage: qr{[\w\/]+} dir
examples/ex3.pl view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
# Arguments.
if (@ARGV < 1) {
print STDERR "Usage: $0 dir\n";
exit 1;
}
my $dir = $ARGV[0];
# Print all files with UTF-16 BOM in directory.
foreach my $file (File::Find::Rule->bom_utf16->in($dir)) {
print "$file\n";
}
# Output like:
# Usage: qr{[\w\/]+} dir
examples/ex4.pl view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
# Arguments.
if (@ARGV < 1) {
print STDERR "Usage: $0 dir\n";
exit 1;
}
my $dir = $ARGV[0];
# Print all files with UTF-32 BOM in directory.
foreach my $file (File::Find::Rule->bom_utf32->in($dir)) {
print "$file\n";
}
# Output like:
# Usage: qr{[\w\/]+} dir
t/File-Find-Rule-BOM/01-use.t view on Meta::CPAN
use strict;
use warnings;
use Test::More 'tests' => 3;
use Test::NoWarnings;
BEGIN {
# Test.
use_ok('File::Find::Rule::BOM');
}
# Test.
require_ok('File::Find::Rule::BOM');
t/File-Find-Rule-BOM/02-version.t view on Meta::CPAN
use strict;
use warnings;
use File::Find::Rule::BOM;
use Test::More 'tests' => 2;
use Test::NoWarnings;
# Test.
is($File::Find::Rule::BOM::VERSION, 0.03, 'Version.');
t/File-Find-Rule-BOM/03-bom.t view on Meta::CPAN
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
use File::Object;
use Test::More 'tests' => 2;
use Test::NoWarnings;
# Data directory.
my $data_dir = File::Object->new->up->dir('data')->set;
# Test.
my @ret = sort { $a cmp $b } File::Find::Rule->bom->relative->in($data_dir->s);
is_deeply(
\@ret,
[
'UTF_16_bom',
'UTF_32_bom',
'UTF_8_bom',
],
'Get files with BOM in data directory.',
);
t/File-Find-Rule-BOM/04-bom_utf8.t view on Meta::CPAN
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
use File::Object;
use Test::More 'tests' => 2;
use Test::NoWarnings;
# Data directory.
my $data_dir = File::Object->new->up->dir('data')->set;
# Test.
my @ret = File::Find::Rule->bom_utf8->relative->in($data_dir->s);
is_deeply(
\@ret,
[
'UTF_8_bom',
],
'Get files with UTF-8 BOM in data directory.',
);
t/File-Find-Rule-BOM/05-bom_utf16.t view on Meta::CPAN
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
use File::Object;
use Test::More 'tests' => 2;
use Test::NoWarnings;
# Data directory.
my $data_dir = File::Object->new->up->dir('data')->set;
# Test.
my @ret = File::Find::Rule->bom_utf16->relative->in($data_dir->s);
is_deeply(
\@ret,
[
'UTF_16_bom',
],
'Get files with UTF-16 BOM in data directory.',
);
t/File-Find-Rule-BOM/06-bom_utf32.t view on Meta::CPAN
use strict;
use warnings;
use File::Find::Rule;
use File::Find::Rule::BOM;
use File::Object;
use Test::More 'tests' => 2;
use Test::NoWarnings;
# Data directory.
my $data_dir = File::Object->new->up->dir('data')->set;
# Test.
my @ret = File::Find::Rule->bom_utf32->relative->in($data_dir->s);
is_deeply(
\@ret,
[
'UTF_32_bom',
],
'Get files with UTF-32 BOM in data directory.',
);
xt/File-Find-Rule-BOM/01-pod_coverage.t view on Meta::CPAN
use strict;
use warnings;
use Test::NoWarnings;
use Test::Pod::Coverage 'tests' => 2;
# Test.
pod_coverage_ok('File::Find::Rule::BOM', 'File::Find::Rule::BOM is covered.');
xt/File-Find-Rule-BOM/02-pod.t view on Meta::CPAN
use File::Object;
use Test::More 'tests' => 2;
use Test::NoWarnings;
# Test.
SKIP: {
if ($PERL_VERSION lt v5.8.0) {
skip 'Perl version lesser then 5.8.0.', 1;
}
require Test::Pod;
Test::Pod::pod_file_ok(File::Object->new->up(2)->file('BOM.pm')->s);
};