diff options
author | Doug Barton <dougb@FreeBSD.org> | 2005-06-27 02:56:12 +0000 |
---|---|---|
committer | Doug Barton <dougb@FreeBSD.org> | 2005-06-27 02:56:12 +0000 |
commit | 4984b43ef1d776d7832069522782bc1834e78046 (patch) | |
tree | 1e3839c420cf5f874b17dde1a0ca851584fdbef2 /dns/p5-Net-DNS | |
parent | ad40f38d5154f4bd7a4bb61ff8ff85ba66711991 (diff) | |
download | ports-4984b43ef1d776d7832069522782bc1834e78046.tar.gz ports-4984b43ef1d776d7832069522782bc1834e78046.zip |
Notes
Diffstat (limited to 'dns/p5-Net-DNS')
-rw-r--r-- | dns/p5-Net-DNS/Makefile | 10 | ||||
-rw-r--r-- | dns/p5-Net-DNS/files/bytes.pm | 91 | ||||
-rw-r--r-- | dns/p5-Net-DNS/files/bytes_heavy.pl | 43 | ||||
-rw-r--r-- | dns/p5-Net-DNS/pkg-plist | 2 |
4 files changed, 146 insertions, 0 deletions
diff --git a/dns/p5-Net-DNS/Makefile b/dns/p5-Net-DNS/Makefile index bb16a586fa01..5cee8ebc2daf 100644 --- a/dns/p5-Net-DNS/Makefile +++ b/dns/p5-Net-DNS/Makefile @@ -46,10 +46,20 @@ MAN3= Net::DNS.3 Net::DNS::Header.3 Net::DNS::Packet.3 \ .if ${PERL_LEVEL} < 500800 RUN_DEPENDS+= ${SITE_PERL}/${PERL_ARCH}/MIME/Base64.pm:${PORTSDIR}/converters/p5-MIME-Base64 +RUN_DEPENDS+= ${SITE_PERL}/IO/Socket/INET6.pm:${PORTSDIR}/net/p5-IO-INET6 +PLIST_SUB+= BYTES_INSTALL="" +.else +PLIST_SUB+= BYTES_INSTALL="@comment " .endif DOCSDIR= ${PREFIX}/share/doc/p5-Net-DNS + post-install: +.if ${PERL_LEVEL} < 500800 +.for file in bytes.pm bytes_heavy.pl + ${INSTALL_DATA} ${FILESDIR}/${file} ${SITE_PERL} +.endfor +.endif .if !defined(NOPORTDOCS) @${MKDIR} ${DOCSDIR} .for doc in Changes README TODO 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; diff --git a/dns/p5-Net-DNS/pkg-plist b/dns/p5-Net-DNS/pkg-plist index 3c4c20269d1b..8020ce9cfd73 100644 --- a/dns/p5-Net-DNS/pkg-plist +++ b/dns/p5-Net-DNS/pkg-plist @@ -1,3 +1,5 @@ +%%BYTES_INSTALL%%%%SITE_PERL%%/bytes.pm +%%BYTES_INSTALL%%%%SITE_PERL%%/bytes_heavy.pl %%SITE_PERL%%/%%PERL_ARCH%%/Net/DNS.pm %%SITE_PERL%%/%%PERL_ARCH%%/Net/DNS/FAQ.pod %%SITE_PERL%%/%%PERL_ARCH%%/Net/DNS/Header.pm |