diff options
author | dougb <dougb@FreeBSD.org> | 2005-06-27 10:56:12 +0800 |
---|---|---|
committer | dougb <dougb@FreeBSD.org> | 2005-06-27 10:56:12 +0800 |
commit | abd3547bcf415b530ec60b4e9865d34e937641ee (patch) | |
tree | 2275315aece48bace098a6739dc86934fa6c9fb7 /dns/p5-Net-DNS/files | |
parent | 7afd08d81248d064e82d00ddd959e909b2d6da49 (diff) | |
download | freebsd-ports-gnome-abd3547bcf415b530ec60b4e9865d34e937641ee.tar.gz freebsd-ports-gnome-abd3547bcf415b530ec60b4e9865d34e937641ee.tar.zst freebsd-ports-gnome-abd3547bcf415b530ec60b4e9865d34e937641ee.zip |
Make this work on Perl 5.005.03 (ala RELENG_4) by installing
the bytes.pm pragma, which is the only thing that the new
version of Net::DNS needs from 5.6+ that isn't in 5.005.03.
Diffstat (limited to 'dns/p5-Net-DNS/files')
-rw-r--r-- | dns/p5-Net-DNS/files/bytes.pm | 91 | ||||
-rw-r--r-- | dns/p5-Net-DNS/files/bytes_heavy.pl | 43 |
2 files changed, 134 insertions, 0 deletions
diff --git a/dns/p5-Net-DNS/files/bytes.pm b/dns/p5-Net-DNS/files/bytes.pm new file mode 100644 index 000000000000..ca1ac5c2c4f9 --- /dev/null +++ b/dns/p5-Net-DNS/files/bytes.pm @@ -0,0 +1,91 @@ +# This is the file from Perl 5.8.7, installed +# by the p5-Net-DNS module for Perl < 5.6. + +package bytes; + +#our $VERSION = '1.02'; + +$bytes::hint_bits = 0x00000008; + +sub import { + $^H |= $bytes::hint_bits; +} + +sub unimport { + $^H &= ~$bytes::hint_bits; +} + +sub AUTOLOAD { + require "bytes_heavy.pl"; + goto &$AUTOLOAD if defined &$AUTOLOAD; + require Carp; + Carp::croak("Undefined subroutine $AUTOLOAD called"); +} + +sub length ($); +sub chr ($); +sub ord ($); +sub substr ($$;$$); +sub index ($$;$); +sub rindex ($$;$); + +1; +__END__ + +=head1 NAME + +bytes - Perl pragma to force byte semantics rather than character semantics + +=head1 SYNOPSIS + + use bytes; + ... chr(...); # or bytes::chr + ... index(...); # or bytes::index + ... length(...); # or bytes::length + ... ord(...); # or bytes::ord + ... rindex(...); # or bytes::rindex + ... substr(...); # or bytes::substr + no bytes; + + +=head1 DESCRIPTION + +The C<use bytes> pragma disables character semantics for the rest of the +lexical scope in which it appears. C<no bytes> can be used to reverse +the effect of C<use bytes> within the current lexical scope. + +Perl normally assumes character semantics in the presence of character +data (i.e. data that has come from a source that has been marked as +being of a particular character encoding). When C<use bytes> is in +effect, the encoding is temporarily ignored, and each string is treated +as a series of bytes. + +As an example, when Perl sees C<$x = chr(400)>, it encodes the character +in UTF-8 and stores it in $x. Then it is marked as character data, so, +for instance, C<length $x> returns C<1>. However, in the scope of the +C<bytes> pragma, $x is treated as a series of bytes - the bytes that make +up the UTF8 encoding - and C<length $x> returns C<2>: + + $x = chr(400); + print "Length is ", length $x, "\n"; # "Length is 1" + printf "Contents are %vd\n", $x; # "Contents are 400" + { + use bytes; # or "require bytes; bytes::length()" + print "Length is ", length $x, "\n"; # "Length is 2" + printf "Contents are %vd\n", $x; # "Contents are 198.144" + } + +chr(), ord(), substr(), index() and rindex() behave similarly. + +For more on the implications and differences between character +semantics and byte semantics, see L<perluniintro> and L<perlunicode>. + +=head1 LIMITATIONS + +bytes::substr() does not work as an lvalue(). + +=head1 SEE ALSO + +L<perluniintro>, L<perlunicode>, L<utf8> + +=cut diff --git a/dns/p5-Net-DNS/files/bytes_heavy.pl b/dns/p5-Net-DNS/files/bytes_heavy.pl new file mode 100644 index 000000000000..e0bdf4b66523 --- /dev/null +++ b/dns/p5-Net-DNS/files/bytes_heavy.pl @@ -0,0 +1,43 @@ +# This is the file from Perl 5.8.7, installed +# by the p5-Net-DNS module for Perl < 5.6. + +package bytes; + +sub length ($) { + BEGIN { bytes::import() } + return CORE::length($_[0]); +} + +sub substr ($$;$$) { + BEGIN { bytes::import() } + return + @_ == 2 ? CORE::substr($_[0], $_[1]) : + @_ == 3 ? CORE::substr($_[0], $_[1], $_[2]) : + CORE::substr($_[0], $_[1], $_[2], $_[3]) ; +} + +sub ord ($) { + BEGIN { bytes::import() } + return CORE::ord($_[0]); +} + +sub chr ($) { + BEGIN { bytes::import() } + return CORE::chr($_[0]); +} + +sub index ($$;$) { + BEGIN { bytes::import() } + return + @_ == 2 ? CORE::index($_[0], $_[1]) : + CORE::index($_[0], $_[1], $_[2]) ; +} + +sub rindex ($$;$) { + BEGIN { bytes::import() } + return + @_ == 2 ? CORE::rindex($_[0], $_[1]) : + CORE::rindex($_[0], $_[1], $_[2]) ; +} + +1; |