view release on metacpan or search on metacpan
BOL_t8_p8|5.033003||Viu
BOL_t8_pb|5.033003||Viu
BOL_tb|5.035004||Viu
BOL_tb_p8|5.033003||Viu
BOL_tb_pb|5.033003||Viu
BOM_UTF8|5.025005|5.003007|p
BOM_UTF8_FIRST_BYTE|5.019004||Viu
BOM_UTF8_TAIL|5.019004||Viu
boolSV|5.004000|5.003007|p
boot_core_builtin|5.035007||Viu
boot_core_mro|5.009005||Viu
boot_core_PerlIO|5.007002||Viu
boot_core_UNIVERSAL|5.003007||Viu
#endif
#endif
#if 'A' == 65
#ifndef BOM_UTF8
# define BOM_UTF8 "\xEF\xBB\xBF"
#endif
#ifndef REPLACEMENT_CHARACTER_UTF8
# define REPLACEMENT_CHARACTER_UTF8 "\xEF\xBF\xBD"
#endif
#elif '^' == 95
#ifndef BOM_UTF8
# define BOM_UTF8 "\xDD\x73\x66\x73"
#endif
#ifndef REPLACEMENT_CHARACTER_UTF8
# define REPLACEMENT_CHARACTER_UTF8 "\xDD\x73\x73\x71"
#endif
#elif '^' == 176
#ifndef BOM_UTF8
# define BOM_UTF8 "\xDD\x72\x65\x72"
#endif
#ifndef REPLACEMENT_CHARACTER_UTF8
# define REPLACEMENT_CHARACTER_UTF8 "\xDD\x72\x72\x70"
#endif
view all matches for this distribution
view release on metacpan or search on metacpan
BmFLAGS|5.009005||Viu
BmPREVIOUS|5.003007||Viu
BmRARE|5.003007||Viu
BmUSEFUL|5.003007||Viu
BOL|5.003007||Viu
BOM_UTF8|5.025005|5.003007|p
BOM_UTF8_FIRST_BYTE|5.019004||Viu
BOM_UTF8_TAIL|5.019004||Viu
bool|5.003007||Viu
boolSV|5.004000|5.003007|p
boot_core_mro|5.009005||Viu
boot_core_PerlIO|5.007002||Viu
boot_core_UNIVERSAL|5.003007||Viu
#endif
#endif
#if 'A' == 65
#ifndef BOM_UTF8
# define BOM_UTF8 "\xEF\xBB\xBF"
#endif
#ifndef REPLACEMENT_CHARACTER_UTF8
# define REPLACEMENT_CHARACTER_UTF8 "\xEF\xBF\xBD"
#endif
#elif '^' == 95
#ifndef BOM_UTF8
# define BOM_UTF8 "\xDD\x73\x66\x73"
#endif
#ifndef REPLACEMENT_CHARACTER_UTF8
# define REPLACEMENT_CHARACTER_UTF8 "\xDD\x73\x73\x71"
#endif
#elif '^' == 176
#ifndef BOM_UTF8
# define BOM_UTF8 "\xDD\x72\x65\x72"
#endif
#ifndef REPLACEMENT_CHARACTER_UTF8
# define REPLACEMENT_CHARACTER_UTF8 "\xDD\x72\x72\x70"
#endif
view all matches for this distribution
view release on metacpan or search on metacpan
BOL_t8_p8|5.033003||Viu
BOL_t8_pb|5.033003||Viu
BOL_tb|5.035004||Viu
BOL_tb_p8|5.033003||Viu
BOL_tb_pb|5.033003||Viu
BOM_UTF8|5.025005|5.003007|p
BOM_UTF8_FIRST_BYTE|5.019004||Viu
BOM_UTF8_TAIL|5.019004||Viu
boolSV|5.004000|5.003007|p
boot_core_builtin|5.035007||Viu
boot_core_mro|5.009005||Viu
boot_core_PerlIO|5.007002||Viu
boot_core_UNIVERSAL|5.003007||Viu
#endif
#endif
#if 'A' == 65
#ifndef BOM_UTF8
# define BOM_UTF8 "\xEF\xBB\xBF"
#endif
#ifndef REPLACEMENT_CHARACTER_UTF8
# define REPLACEMENT_CHARACTER_UTF8 "\xEF\xBF\xBD"
#endif
#elif '^' == 95
#ifndef BOM_UTF8
# define BOM_UTF8 "\xDD\x73\x66\x73"
#endif
#ifndef REPLACEMENT_CHARACTER_UTF8
# define REPLACEMENT_CHARACTER_UTF8 "\xDD\x73\x73\x71"
#endif
#elif '^' == 176
#ifndef BOM_UTF8
# define BOM_UTF8 "\xDD\x72\x65\x72"
#endif
#ifndef REPLACEMENT_CHARACTER_UTF8
# define REPLACEMENT_CHARACTER_UTF8 "\xDD\x72\x72\x70"
#endif
view all matches for this distribution
view release on metacpan or search on metacpan
script/afpdump.pl view on Meta::CPAN
# cheat 0: utf8 flag;
if ( Encode::is_utf8($octet) ) {
return find_encoding('utf8') unless $NoUTFAutoGuess;
Encode::_utf8_off($octet);
}
# cheat 1: BOM
use Encode::Unicode;
unless ($NoUTFAutoGuess) {
my $BOM = unpack('n', $octet);
return find_encoding('UTF-16')
if (defined $BOM and ($BOM == 0xFeFF or $BOM == 0xFFFe));
$BOM = unpack('N', $octet);
return find_encoding('UTF-32')
if (defined $BOM and ($BOM == 0xFeFF or $BOM == 0xFFFe0000));
if ($octet =~ /\x00/o){ # if \x00 found, we assume UTF-(16|32)(BE|LE)
my $utf;
my ($be, $le) = (0, 0);
if ($octet =~ /\x00\x00/o){ # UTF-32(BE|LE) assumed
$utf = "UTF-32";
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Parse/CSV.pm view on Meta::CPAN
array references of the columns, treating them just like all the other
rows in the file.
If your CSV file has (or might have) a <Byte-Order Mark|https://en.wikipedia.org/wiki/Byte_order_mark>,
you must use the C<names> functionality, because this lets us call the C<header>
method of C<Text::CSV_XS>, which is the only place the BOM is handled
in that module.
=item C<filter>
The optional C<filter> param will be used to filter the records if
view all matches for this distribution
view release on metacpan or search on metacpan
t/000-report-versions.t view on Meta::CPAN
return $self->_error("Did not provide a string to load");
}
# Byte order marks
# NOTE: Keeping this here to educate maintainers
# my %BOM = (
# "\357\273\277" => 'UTF-8',
# "\376\377" => 'UTF-16BE',
# "\377\376" => 'UTF-16LE',
# "\377\376\0\0" => 'UTF-32LE'
# "\0\0\376\377" => 'UTF-32BE',
# );
if ( $string =~ /^(?:\376\377|\377\376|\377\376\0\0|\0\0\376\377)/ ) {
return $self->_error("Stream has a non UTF-8 BOM");
} else {
# Strip UTF-8 bom if found, we'll just ignore it
$string =~ s/^\357\273\277//;
}
view all matches for this distribution
view release on metacpan or search on metacpan
0.47 2024/04/21
- Improve class detection
0.46 2024/04/15
- Strip BOM before finding a package
0.45 2024/01/21
- Make sure to stringify versions so that they are quoted when they are encoded in JSON
0.44 2023/04/27
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Parse/PayPal/TxDetailReport/Old.pm view on Meta::CPAN
my $fh;
my $file;
if (defined(my $str = $args{string})) {
require IO::Scalar;
require String::BOM;
if (!$format) {
$format = $str =~ /\t/ ? 'tsv' : 'csv';
}
$str = String::BOM::strip_bom_from_string($str);
$fh = IO::Scalar->new(\$str);
$file = "string";
} elsif (defined(my $file0 = $args{file})) {
require File::BOM;
if (!$format) {
$format = $file0 =~ /\.(csv)\z/i ? 'csv' : 'tsv';
}
open $fh, "<:encoding(utf8):via(File::BOM)", $file0
or return [500, "Can't open file '$file': $!"];
$file = $file0;
} else {
return [400, "Please specify file (or string)"];
}
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Parse/PayPal/TxDetailReport.pm view on Meta::CPAN
my @handles;
my @files;
if (my $strings = $args{strings}) {
require IO::Scalar;
require String::BOM;
if (!$format) {
$format = $strings->[0] =~ /\t/ ? 'tsv' : 'csv';
}
for my $str0 (@{ $strings }) {
my $str = String::BOM::strip_bom_from_string($str0);
my $fh = IO::Scalar->new(\$str);
push @handles, $fh;
push @files, "string";
}
} elsif (my $files = $args{files}) {
require File::BOM;
if (!$format) {
$format = $files->[0] =~ /\.(csv)\z/i ? 'csv' : 'tsv';
}
for my $file (@{ $files }) {
open my($fh), "<:encoding(utf8):via(File::BOM)", $file
or return [500, "Can't open file '$file': $!"];
push @handles, $fh;
push @files, $file;
}
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Parse/PayPal/TxFinderReport.pm view on Meta::CPAN
my $handle;
my $file;
if (defined(my $str0 = $args{string})) {
require IO::Scalar;
require String::BOM;
if (!$format) {
$format = $str0 =~ /\t/ ? 'tsv' : 'csv';
}
my $str = String::BOM::strip_bom_from_string($str0);
$handle = IO::Scalar->new(\$str);
$file = "(string)";
} elsif (defined(my $file = $args{file})) {
require File::BOM;
if (!$format) {
$format = $file =~ /\.(csv)\z/i ? 'csv' : 'tsv';
}
open $handle, "<:encoding(utf8):via(File::BOM)", $file
or return [500, "Can't open file '$file': $!"];
} else {
return [400, "Please specify files (or strings)"];
}
view all matches for this distribution
view release on metacpan or search on metacpan
ca-bundle.crt view on Meta::CPAN
Equifax Secure CA
=================
-----BEGIN CERTIFICATE-----
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
ca-bundle.crt view on Meta::CPAN
-----END CERTIFICATE-----
Buypass Class 2 Root CA
=======================
-----BEGIN CERTIFICATE-----
MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X
DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1
eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1
g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn
ca-bundle.crt view on Meta::CPAN
-----END CERTIFICATE-----
Buypass Class 3 Root CA
=======================
-----BEGIN CERTIFICATE-----
MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X
DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1
eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH
sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Pcore/CDN/Static/FA.pm view on Meta::CPAN
use Pcore -const, -export;
const our $EXPORT => {
FAB => [qw[$FAB_ACCESSIBLE_ICON $FAB_ACCUSOFT $FAB_ACQUISITIONS_INCORPORATED $FAB_ADN $FAB_ADOBE $FAB_ADVERSAL $FAB_AFFILIATETHEME $FAB_AIRBNB $FAB_ALGOLIA $FAB_ALIPAY $FAB_AMAZON $FAB_AMAZON_PAY $FAB_AMILIA $FAB_ANDROID $FAB_ANGELLIST $FAB_ANGRY...
FAR => [qw[$FAR_ADDRESS_BOOK $FAR_ADDRESS_CARD $FAR_ANGRY $FAR_ARROW_ALT_CIRCLE_DOWN $FAR_ARROW_ALT_CIRCLE_LEFT $FAR_ARROW_ALT_CIRCLE_RIGHT $FAR_ARROW_ALT_CIRCLE_UP $FAR_BELL $FAR_BELL_SLASH $FAR_BOOKMARK $FAR_BUILDING $FAR_CALENDAR $FAR_CALENDAR...
FAS => [qw[$FAS_AD $FAS_ADDRESS_BOOK $FAS_ADDRESS_CARD $FAS_ADJUST $FAS_AIR_FRESHENER $FAS_ALIGN_CENTER $FAS_ALIGN_JUSTIFY $FAS_ALIGN_LEFT $FAS_ALIGN_RIGHT $FAS_ALLERGIES $FAS_AMBULANCE $FAS_AMERICAN_SIGN_LANGUAGE_INTERPRETING $FAS_ANCHOR $FAS_AN...
};
const our $FAB_ACCESSIBLE_ICON => 'fab fa-accessible-icon';
const our $FAB_ACCUSOFT => 'fab fa-accusoft';
const our $FAB_ACQUISITIONS_INCORPORATED => 'fab fa-acquisitions-incorporated';
lib/Pcore/CDN/Static/FA.pm view on Meta::CPAN
const our $FAS_BLENDER_PHONE => 'fas fa-blender-phone';
const our $FAS_BLIND => 'fas fa-blind';
const our $FAS_BLOG => 'fas fa-blog';
const our $FAS_BOLD => 'fas fa-bold';
const our $FAS_BOLT => 'fas fa-bolt';
const our $FAS_BOMB => 'fas fa-bomb';
const our $FAS_BONE => 'fas fa-bone';
const our $FAS_BONG => 'fas fa-bong';
const our $FAS_BOOK => 'fas fa-book';
const our $FAS_BOOK_DEAD => 'fas fa-book-dead';
const our $FAS_BOOK_MEDICAL => 'fas fa-book-medical';
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Pcore/Resources/FA.pm view on Meta::CPAN
use Pcore -const, -export;
const our $EXPORT => {
FAB => [qw[$FAB_ACCESSIBLE_ICON $FAB_ACCUSOFT $FAB_ACQUISITIONS_INCORPORATED $FAB_ADN $FAB_ADVERSAL $FAB_AFFILIATETHEME $FAB_ALGOLIA $FAB_ALIPAY $FAB_AMAZON $FAB_AMAZON_PAY $FAB_AMILIA $FAB_ANDROID $FAB_ANGELLIST $FAB_ANGRYCREATIVE $FAB_ANGULAR $...
FAR => [qw[$FAR_ADDRESS_BOOK $FAR_ADDRESS_CARD $FAR_ANGRY $FAR_ARROW_ALT_CIRCLE_DOWN $FAR_ARROW_ALT_CIRCLE_LEFT $FAR_ARROW_ALT_CIRCLE_RIGHT $FAR_ARROW_ALT_CIRCLE_UP $FAR_BELL $FAR_BELL_SLASH $FAR_BOOKMARK $FAR_BUILDING $FAR_CALENDAR $FAR_CALENDAR...
FAS => [qw[$FAS_AD $FAS_ADDRESS_BOOK $FAS_ADDRESS_CARD $FAS_ADJUST $FAS_AIR_FRESHENER $FAS_ALIGN_CENTER $FAS_ALIGN_JUSTIFY $FAS_ALIGN_LEFT $FAS_ALIGN_RIGHT $FAS_ALLERGIES $FAS_AMBULANCE $FAS_AMERICAN_SIGN_LANGUAGE_INTERPRETING $FAS_ANCHOR $FAS_AN...
};
const our $FAB_ACCESSIBLE_ICON => 'fab fa-accessible-icon';
const our $FAB_ACCUSOFT => 'fab fa-accusoft';
const our $FAB_ACQUISITIONS_INCORPORATED => 'fab fa-acquisitions-incorporated';
lib/Pcore/Resources/FA.pm view on Meta::CPAN
const our $FAS_BLENDER => 'fas fa-blender';
const our $FAS_BLENDER_PHONE => 'fas fa-blender-phone';
const our $FAS_BLIND => 'fas fa-blind';
const our $FAS_BOLD => 'fas fa-bold';
const our $FAS_BOLT => 'fas fa-bolt';
const our $FAS_BOMB => 'fas fa-bomb';
const our $FAS_BONE => 'fas fa-bone';
const our $FAS_BONG => 'fas fa-bong';
const our $FAS_BOOK => 'fas fa-book';
const our $FAS_BOOK_DEAD => 'fas fa-book-dead';
const our $FAS_BOOK_OPEN => 'fas fa-book-open';
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Pcore/Util/Text.pm view on Meta::CPAN
our $CODE = {
decode_eol => <<'PERL', # convert EOL to internal \n representation
s/\x0D?\x0A/\n/smg;
PERL
remove_bom => <<'PERL', # remove BOM
s/\A(?:\x00\x00\xFE\xFF|\xFF\xFE\x00\x00|\xFE\xFF|\xFF\xFE|\xEF\xBB\xBF)//sm;
PERL
fullchomp => <<'PERL',
s/(?:\x0D|\x0A)+\z//sm;
PERL
view all matches for this distribution
view release on metacpan or search on metacpan
t/000-report-versions.t view on Meta::CPAN
return $self->_error("Did not provide a string to load");
}
# Byte order marks
# NOTE: Keeping this here to educate maintainers
# my %BOM = (
# "\357\273\277" => 'UTF-8',
# "\376\377" => 'UTF-16BE',
# "\377\376" => 'UTF-16LE',
# "\377\376\0\0" => 'UTF-32LE'
# "\0\0\376\377" => 'UTF-32BE',
# );
if ( $string =~ /^(?:\376\377|\377\376|\377\376\0\0|\0\0\376\377)/ ) {
return $self->_error("Stream has a non UTF-8 BOM");
} else {
# Strip UTF-8 bom if found, we'll just ignore it
$string =~ s/^\357\273\277//;
}
view all matches for this distribution
view release on metacpan or search on metacpan
0.001 2018-09-26 09:36:12 Europe/Berlin
[Added]
Initial version that introduces functions to test string and files for
byte-order-marks (BOM).
view all matches for this distribution
view release on metacpan or search on metacpan
examples/file-access-tests view on Meta::CPAN
# We jump through this particular hoop because PPI::Document
# does not recognize 'use utf8;'. Instead it looks for a Byte
# Order Mark (a.k.a. non-breaking space) as the first encoded
# character of the file, and adjusts accordingly. UTF-8 files
# without a BOM are therefore not read correctly. So we incur
# the overhead of guessing and decoding if we guess a unique
# encoding. We then feed PPI::Document the possibly-decoded file
# content.
my $doc;
{
view all matches for this distribution
view release on metacpan or search on metacpan
t/000_report_versions.t view on Meta::CPAN
return $self->_error("Did not provide a string to load");
}
# Byte order marks
# NOTE: Keeping this here to educate maintainers
# my %BOM = (
# "\357\273\277" => 'UTF-8',
# "\376\377" => 'UTF-16BE',
# "\377\376" => 'UTF-16LE',
# "\377\376\0\0" => 'UTF-32LE'
# "\0\0\376\377" => 'UTF-32BE',
# );
if ( $string =~ /^(?:\376\377|\377\376|\377\376\0\0|\0\0\376\377)/ ) {
return $self->_error("Stream has a non UTF-8 BOM");
} else {
# Strip UTF-8 bom if found, we'll just ignore it
$string =~ s/^\357\273\277//;
}
view all matches for this distribution
view release on metacpan or search on metacpan
share/extra-files/win32/metacpan.svg view on Meta::CPAN
zs5XFVcV1LVoDX88Q34PBmYba7ryYxRZTvTlJbrkovZ6+0Kh55pU9H9sFfen9YIWCxw6DXzd9qcs
/V+iAyAIKNqaBQACBCAIVo2mwuhGN/X+INq7Po52Xne0M6M4MZRsvwoQvShv5e1S5U4Nl/6MPDfm
dbfrtFnTamHzn23j9ZbrGJ0reQDQjweCZKAfdJEKhMzlQcqqmmKo53Un+4Mcjnw8ymnEqF9Ok0yA
cD0dCCuI3tWseli7+Wka7KPevtKkZ2F+lrQcsC9tfzWz/feX/vzRMCeFGkOeVGZFEJFoShU2NXct
7/ayP/DxKMeT/bHu3bPgGSZAEOvaEvzTcsEsx09FP7mlenShho32Dj0u+rRckLrfzTpt12TSP1jj
p069Rdb/j9l+PQgkKvMIhBJOQafuMXa6xzKFhruO+477nnc7ft3j/sCHgxxPcDzBOMp4xgjU2McJ
AH7j5i6++Wou/T7QrG2GbZgf63cw7q/M/FjU+4jSn/PRWd4UghYfPCVs6qlrcehpt+fdnvYH3h9E
2b4/8vEIdIIIyRAh+leC8/9REXD2H80vGNQsBIA6LXJpO7eO+Q+0GKziq2WvtXfadh21tSU9r4o5
r+gBwCpkiAhkQaxNEWsYkJcZcddx3/PQ8fDKPzvudvy6w13Nu4NUSY5J0klGgvPZW9uleIB/u8v6
juiDQX+NQKq8VtJsz0KbbBfa60brVVLuF12HVvC6xP0PsINkpgOIFQgCIbBZHwSiaOjg5cCvO9rt
+XWPu7287vB1x/UedkmIhEhGMg/MgsL5FHTw+hdqcMH5wv/7Nistrqu972ih+wQG9C+stVanLJaD
view all matches for this distribution
view release on metacpan or search on metacpan
t/000_report_versions.t view on Meta::CPAN
return $self->_error("Did not provide a string to load");
}
# Byte order marks
# NOTE: Keeping this here to educate maintainers
# my %BOM = (
# "\357\273\277" => 'UTF-8',
# "\376\377" => 'UTF-16BE',
# "\377\376" => 'UTF-16LE',
# "\377\376\0\0" => 'UTF-32LE'
# "\0\0\376\377" => 'UTF-32BE',
# );
if ( $string =~ /^(?:\376\377|\377\376|\377\376\0\0|\0\0\376\377)/ ) {
return $self->_error("Stream has a non UTF-8 BOM");
} else {
# Strip UTF-8 bom if found, we'll just ignore it
$string =~ s/^\357\273\277//;
}
view all matches for this distribution
view release on metacpan or search on metacpan
t/000_report_versions.t view on Meta::CPAN
return $self->_error("Did not provide a string to load");
}
# Byte order marks
# NOTE: Keeping this here to educate maintainers
# my %BOM = (
# "\357\273\277" => 'UTF-8',
# "\376\377" => 'UTF-16BE',
# "\377\376" => 'UTF-16LE',
# "\377\376\0\0" => 'UTF-32LE'
# "\0\0\376\377" => 'UTF-32BE',
# );
if ( $string =~ /^(?:\376\377|\377\376|\377\376\0\0|\0\0\376\377)/ ) {
return $self->_error("Stream has a non UTF-8 BOM");
} else {
# Strip UTF-8 bom if found, we'll just ignore it
$string =~ s/^\357\273\277//;
}
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Perl/PrereqScanner/NotQuiteLite.pm view on Meta::CPAN
if ($self->{quick}) {
$c->{file_size} = length $string;
$self->_skim_string($c, \$string) if $c->{file_size} > 30_000;
}
# UTF8 BOM
if ($string =~ s/\A(\xef\xbb\xbf)//s) {
utf8::decode($string);
$c->{decoded} = 1;
}
# Other BOMs (TODO: also decode?)
$string =~ s/\A(\x00\x00\xfe\xff|\xff\xfe\x00\x00|\xfe\xff|\xff\xfe)//s;
# normalize
if ("\n" eq "\015") {
$string =~ s/(?:\015?\012)/\n/gs;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Perl/Tidy.pm view on Meta::CPAN
# operations with utf8. If we have not decoded the data, then
# we must not treat it as encoded data.
my $is_encoded_data = $encoding_in ? 'utf8' : EMPTY_STRING;
$self->[_is_encoded_data_] = $is_encoded_data;
# Delete any Byte Order Mark (BOM), which can cause trouble
if ($is_encoded_data) {
${$rinput_string} =~ s/^\x{FEFF}//;
}
$rstatus->{'input_name'} = $display_name;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/perlapinames_generated.pm view on Meta::CPAN
## no critic qw(ProhibitParensWithBuiltins ProhibitNoisyQuotes) # SYSTEM SPECIAL 3: allow auto-generated code
$perlapinames_generated::FUNCTIONS_DOCUMENTED = undef;
$perlapinames_generated::FUNCTIONS_DOCUMENTED = {
'AvFILL' => 1,
'BOM_UTF8' => 1,
'BhkDISABLE' => 1,
'BhkENABLE' => 1,
'BhkENTRY_set' => 1,
'CLASS' => 1,
'Copy' => 1,
view all matches for this distribution
view release on metacpan or search on metacpan
share/Synopsis/S32-setting-library/IO.pod view on Meta::CPAN
) is export
A convenience method/function that hides most of the OO complexity.
It will only open normal files. Text is the default. Note that
the "Unicode" encoding implies figuring out which actual UTF is
in use, either from a BOM or other heuristics. If heuristics are
inconclusive, UTF-8 will be assumed. (No 8-bit encoding will ever
be picked implicitly.) A file opened with C<:bin> may still be
processed line-by-line, but IO will be in terms of C<Buf> rather
than C<Str> types.
view all matches for this distribution
view release on metacpan or search on metacpan
docs/notes/unicode_draft view on Meta::CPAN
The "lang" should never be inferred from encoding -- it makes no
sense because lang usage shifts with time: People are writing
Trad.Chinese in GBK all the time now.
2. BOM sniffing of .pl files, but currently the set it knows is
(UTF16[LB]E, UTF8+BOM, ASCII(really latin* as default))
it should be:
(UTF32[LB]E, UTF16[LB]E, UTF8(default))
3. Per-handle stackable IO layers makes sense.
But it should allow introspection into different layer-chunks:
docs/notes/unicode_draft view on Meta::CPAN
.bytes # pretend strings are buffers
.codepoints # same as perl5 - not terribly useful
# - basically unsigned integers with 21 bits
.characters # this should be the default:
# - COMBINING MARKS
# - BOM (and other zero-width assertions)
.graphemes # visual rendering - includes metadata like
# - LANGUAGE TAG blocks
# - VARIATION SELECTOR
# - LTR/RTL SELECTOR
# - Act as pre-decomposed forms (for canonical decomposition)
view all matches for this distribution
view release on metacpan or search on metacpan
lib/PerlIO/bom.pm view on Meta::CPAN
XSLoader::load(__PACKAGE__, __PACKAGE__->VERSION);
1;
#ABSTRACT: Automatic BOM handling in Unicode IO
__END__
=pod
=encoding UTF-8
=head1 NAME
PerlIO::bom - Automatic BOM handling in Unicode IO
=head1 VERSION
version 0.001
lib/PerlIO/bom.pm view on Meta::CPAN
open my $fh, '<:bom(utf-8)', $filename;
=head1 DESCRIPTION
This module will automate BOM handling. On a reading handle, it will try to detect a BOM and push an appropriate decoding layer for that encoding. If no BOM is detected the specified encoding is used, or UTF-8 if none is given.
A writing handle will be opened with the specified encoding, and a BOM will be written to it.
=head1 SYNTAX
This modules does not have to be loaded explicitly, it will be loaded automatically by using it in an open mode. The module has the following general syntax: C<:bom(encoding)> or C<:bom>. The encoding may be anything C<:encoding> accepts.
view all matches for this distribution
view release on metacpan or search on metacpan
BOL_t8_p8|5.033003||Viu
BOL_t8_pb|5.033003||Viu
BOL_tb|5.035004||Viu
BOL_tb_p8|5.033003||Viu
BOL_tb_pb|5.033003||Viu
BOM_UTF8|5.025005|5.003007|p
BOM_UTF8_FIRST_BYTE|5.019004||Viu
BOM_UTF8_TAIL|5.019004||Viu
boolSV|5.004000|5.003007|p
boot_core_builtin|5.035007||Viu
boot_core_mro|5.009005||Viu
boot_core_PerlIO|5.007002||Viu
boot_core_UNIVERSAL|5.003007||Viu
#endif
#endif
#if 'A' == 65
#ifndef BOM_UTF8
# define BOM_UTF8 "\xEF\xBB\xBF"
#endif
#ifndef REPLACEMENT_CHARACTER_UTF8
# define REPLACEMENT_CHARACTER_UTF8 "\xEF\xBF\xBD"
#endif
#elif '^' == 95
#ifndef BOM_UTF8
# define BOM_UTF8 "\xDD\x73\x66\x73"
#endif
#ifndef REPLACEMENT_CHARACTER_UTF8
# define REPLACEMENT_CHARACTER_UTF8 "\xDD\x73\x73\x71"
#endif
#elif '^' == 176
#ifndef BOM_UTF8
# define BOM_UTF8 "\xDD\x72\x65\x72"
#endif
#ifndef REPLACEMENT_CHARACTER_UTF8
# define REPLACEMENT_CHARACTER_UTF8 "\xDD\x72\x72\x70"
#endif
view all matches for this distribution
view release on metacpan or search on metacpan
t/EscStatus.t view on Meta::CPAN
ok ($AD_str !~ /\p{PerlIO::via::EscStatus::IsZero}/);
ok ("\x{0300}" =~ /\p{PerlIO::via::EscStatus::IsZero}/); # Mn
ok ("\x{0488}" =~ /\p{PerlIO::via::EscStatus::IsZero}/); # Me
ok ("\x{1100}" !~ /\p{PerlIO::via::EscStatus::IsZero}/); # W
ok ("\x{FF10}" !~ /\p{PerlIO::via::EscStatus::IsZero}/); # F
ok ("\x{FEFF}" =~ /\p{PerlIO::via::EscStatus::IsZero}/); # BOM
#------------------------------------------------------------------------------
# IsDouble
t/EscStatus.t view on Meta::CPAN
ok ($_9F_str !~ /\p{PerlIO::via::EscStatus::IsDouble}/);
ok ("\x{0300}" !~ /\p{PerlIO::via::EscStatus::IsDouble}/); # Mn
ok ("\x{0488}" !~ /\p{PerlIO::via::EscStatus::IsDouble}/); # Me
ok ("\x{1100}" =~ /\p{PerlIO::via::EscStatus::IsDouble}/); # W
ok ("\x{FF10}" =~ /\p{PerlIO::via::EscStatus::IsDouble}/); # F
ok ("\x{FEFF}" !~ /\p{PerlIO::via::EscStatus::IsDouble}/); # BOM
#------------------------------------------------------------------------------
# IsOther
t/EscStatus.t view on Meta::CPAN
ok ($_9F_str !~ /\p{PerlIO::via::EscStatus::IsOther}/);
ok ("\x{0300}" !~ /\p{PerlIO::via::EscStatus::IsOther}/); # Mn
ok ("\x{0488}" !~ /\p{PerlIO::via::EscStatus::IsOther}/); # Me
ok ("\x{1100}" !~ /\p{PerlIO::via::EscStatus::IsOther}/); # W
ok ("\x{FF10}" !~ /\p{PerlIO::via::EscStatus::IsOther}/); # F
ok ("\x{FEFF}" !~ /\p{PerlIO::via::EscStatus::IsOther}/); # BOM
#------------------------------------------------------------------------------
# _truncate
view all matches for this distribution