/
usr
/
local
/
share
/
perl5
/
URI
/
/usr/local/share/perl5/URI
mkdir
upload
Name
Size
Mode
Actions
file/
-
0755
rm
urn/
-
0755
rm
data.pm
3417
0444
edit
dl
rm
Escape.pm
7022
0444
edit
dl
rm
file.pm
9761
0444
edit
dl
rm
ftp.pm
1082
0444
edit
dl
rm
gopher.pm
2454
0444
edit
dl
rm
Heuristic.pm
6524
0444
edit
dl
rm
http.pm
451
0444
edit
dl
rm
https.pm
170
0444
edit
dl
rm
IRI.pm
820
0444
edit
dl
rm
ldap.pm
2950
0444
edit
dl
rm
ldapi.pm
467
0444
edit
dl
rm
ldaps.pm
170
0444
edit
dl
rm
mailto.pm
1302
0444
edit
dl
rm
mms.pm
151
0444
edit
dl
rm
news.pm
1480
0444
edit
dl
rm
nntp.pm
153
0444
edit
dl
rm
pop.pm
1233
0444
edit
dl
rm
QueryParam.pm
4887
0444
edit
dl
rm
rlogin.pm
155
0444
edit
dl
rm
rsync.pm
233
0444
edit
dl
rm
rtsp.pm
151
0444
edit
dl
rm
rtspu.pm
152
0444
edit
dl
rm
sftp.pm
124
0444
edit
dl
rm
sip.pm
1735
0444
edit
dl
rm
sips.pm
169
0444
edit
dl
rm
snews.pm
198
0444
edit
dl
rm
Split.pm
2379
0444
edit
dl
rm
ssh.pm
201
0444
edit
dl
rm
telnet.pm
154
0444
edit
dl
rm
tn3270.pm
154
0444
edit
dl
rm
URL.pm
5487
0444
edit
dl
rm
urn.pm
2201
0444
edit
dl
rm
WithBase.pm
3857
0444
edit
dl
rm
_foreign.pm
133
0444
edit
dl
rm
_generic.pm
5848
0444
edit
dl
rm
_idna.pm
2103
0444
edit
dl
rm
_ldap.pm
3275
0444
edit
dl
rm
_login.pm
257
0444
edit
dl
rm
_punycode.pm
4648
0444
edit
dl
rm
_query.pm
2557
0444
edit
dl
rm
_segment.pm
442
0444
edit
dl
rm
_server.pm
3750
0444
edit
dl
rm
_userpass.pm
1060
0444
edit
dl
rm
Edit:
/usr/local/share/perl5/URI/data.pm
(3417B)
package URI::data; # RFC 2397 use strict; use warnings; use parent 'URI'; our $VERSION = '1.71'; $VERSION = eval $VERSION; use MIME::Base64 qw(encode_base64 decode_base64); use URI::Escape qw(uri_unescape); sub media_type { my $self = shift; my $opaque = $self->opaque; $opaque =~ /^([^,]*),?/ or die; my $old = $1; my $base64; $base64 = $1 if $old =~ s/(;base64)$//i; if (@_) { my $new = shift; $new = "" unless defined $new; $new =~ s/%/%25/g; $new =~ s/,/%2C/g; $base64 = "" unless defined $base64; $opaque =~ s/^[^,]*,?/$new$base64,/; $self->opaque($opaque); } return uri_unescape($old) if $old; # media_type can't really be "0" "text/plain;charset=US-ASCII"; # default type } sub data { my $self = shift; my($enc, $data) = split(",", $self->opaque, 2); unless (defined $data) { $data = ""; $enc = "" unless defined $enc; } my $base64 = ($enc =~ /;base64$/i); if (@_) { $enc =~ s/;base64$//i if $base64; my $new = shift; $new = "" unless defined $new; my $uric_count = _uric_count($new); my $urienc_len = $uric_count + (length($new) - $uric_count) * 3; my $base64_len = int((length($new)+2) / 3) * 4; $base64_len += 7; # because of ";base64" marker if ($base64_len < $urienc_len || $_[0]) { $enc .= ";base64"; $new = encode_base64($new, ""); } else { $new =~ s/%/%25/g; } $self->opaque("$enc,$new"); } return unless defined wantarray; $data = uri_unescape($data); return $base64 ? decode_base64($data) : $data; } # I could not find a better way to interpolate the tr/// chars from # a variable. my $ENC = $URI::uric; $ENC =~ s/%//; eval <<EOT; die $@ if $@; sub _uric_count { \$_[0] =~ tr/$ENC//; } EOT 1; __END__ =head1 NAME URI::data - URI that contains immediate data =head1 SYNOPSIS use URI; $u = URI->new("data:"); $u->media_type("image/gif"); $u->data(scalar(`cat camel.gif`)); print "$u\n"; open(XV, "|xv -") and print XV $u->data; =head1 DESCRIPTION The C<URI::data> class supports C<URI> objects belonging to the I<data> URI scheme. The I<data> URI scheme is specified in RFC 2397. It allows inclusion of small data items as "immediate" data, as if it had been included externally. Examples: data:,Perl%20is%20good data:image/gif;base64,R0lGODdhIAAgAIAAAAAAAPj8+CwAAAAAI AAgAAAClYyPqcu9AJyCjtIKc5w5xP14xgeO2tlY3nWcajmZZdeJcG Kxrmimms1KMTa1Wg8UROx4MNUq1HrycMjHT9b6xKxaFLM6VRKzI+p KS9XtXpcbdun6uWVxJXA8pNPkdkkxhxc21LZHFOgD2KMoQXa2KMWI JtnE2KizVUkYJVZZ1nczBxXlFopZBtoJ2diXGdNUymmJdFMAADs= C<URI> objects belonging to the data scheme support the common methods (described in L<URI>) and the following two scheme-specific methods: =over 4 =item $uri->media_type( [$new_media_type] ) Can be used to get or set the media type specified in the URI. If no media type is specified, then the default C<"text/plain;charset=US-ASCII"> is returned. =item $uri->data( [$new_data] ) Can be used to get or set the data contained in the URI. The data is passed unescaped (in binary form). The decision about whether to base64 encode the data in the URI is taken automatically, based on the encoding that produces the shorter URI string. =back =head1 SEE ALSO L<URI> =head1 COPYRIGHT Copyright 1995-1998 Gisle Aas. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut
Save
cmd:
run