__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
package URI::_query;

use strict;
use warnings;

use URI ();
use URI::Escape qw(uri_unescape);
use Scalar::Util ();

our $VERSION = '5.30';

sub query
{
    my $self = shift;
    $$self =~ m,^([^?\#]*)(?:\?([^\#]*))?(.*)$,s or die;

    if (@_) {
	my $q = shift;
	$$self = $1;
	if (defined $q) {
	    $q =~ s/([^$URI::uric])/ URI::Escape::escape_char($1)/ego;
	    utf8::downgrade($q);
	    $$self .= "?$q";
	}
	$$self .= $3;
    }
    $2;
}

# Handle ...?foo=bar&bar=foo type of query
sub query_form {
    my $self = shift;
    my $old = $self->query;
    if (@_) {
        # Try to set query string
        my $delim;
        my $r = $_[0];
        if (_is_array($r)) {
            $delim = $_[1];
            @_ = @$r;
        }
        elsif (ref($r) eq "HASH") {
            $delim = $_[1];
            @_ = map { $_ => $r->{$_} } sort keys %$r;
        }
        $delim = pop if @_ % 2;

        my @query;
        while (my($key,$vals) = splice(@_, 0, 2)) {
            $key = '' unless defined $key;
	    $key =~ s/([;\/?:@&=+,\$\[\]%])/ URI::Escape::escape_char($1)/eg;
	    $key =~ s/ /+/g;
	    $vals = [_is_array($vals) ? @$vals : $vals];
            for my $val (@$vals) {
                if (defined $val) {
                    $val =~ s/([;\/?:@&=+,\$\[\]%])/ URI::Escape::escape_char($1)/eg;
                    $val =~ s/ /+/g;
                    push(@query, "$key=$val");
                }
                else {
                    push(@query, $key);
                }
            }
        }
        if (@query) {
            unless ($delim) {
                $delim = $1 if $old && $old =~ /([&;])/;
                $delim ||= $URI::DEFAULT_QUERY_FORM_DELIMITER || "&";
            }
            $self->query(join($delim, @query));
        }
        else {
            $self->query(undef);
        }
    }
    return if !defined($old) || !length($old) || !defined(wantarray);
    return unless $old =~ /=/; # not a form
    map { ( defined ) ? do { s/\+/ /g; uri_unescape($_) } : undef }
         map { /=/ ? split(/=/, $_, 2) : ($_ => undef)} split(/[&;]/, $old);
}

# Handle ...?dog+bones type of query
sub query_keywords
{
    my $self = shift;
    my $old = $self->query;
    if (@_) {
        # Try to set query string
	my @copy = @_;
	@copy = @{$copy[0]} if @copy == 1 && _is_array($copy[0]);
	for (@copy) { s/([;\/?:@&=+,\$\[\]%])/ URI::Escape::escape_char($1)/eg; }
	$self->query(@copy ? join('+', @copy) : undef);
    }
    return if !defined($old) || !defined(wantarray);
    return if $old =~ /=/;  # not keywords, but a form
    map { uri_unescape($_) } split(/\+/, $old, -1);
}

# Some URI::URL compatibility stuff
sub equery { goto &query }

sub query_param {
    my $self = shift;
    my @old = $self->query_form;

    if (@_ == 0) {
        # get keys
        my (%seen, $i);
        return grep !($i++ % 2 || $seen{$_}++), @old;
    }

    my $key = shift;
    my @i = grep $_ % 2 == 0 && $old[$_] eq $key, 0 .. $#old;

    if (@_) {
        my @new = @old;
        my @new_i = @i;
        my @vals = map { _is_array($_) ? @$_ : $_ } @_;

        while (@new_i > @vals) {
            splice @new, pop @new_i, 2;
        }
        if (@vals > @new_i) {
            my $i = @new_i ? $new_i[-1] + 2 : @new;
            my @splice = splice @vals, @new_i, @vals - @new_i;

            splice @new, $i, 0, map { $key => $_ } @splice;
        }
        if (@vals) {
            #print "SET $new_i[0]\n";
            @new[ map $_ + 1, @new_i ] = @vals;
        }

        $self->query_form(\@new);
    }

    return wantarray ? @old[map $_+1, @i] : @i ? $old[$i[0]+1] : undef;
}

sub query_param_append {
    my $self = shift;
    my $key = shift;
    my @vals = map { _is_array($_) ? @$_ : $_ } @_;
    $self->query_form($self->query_form, $key => \@vals);  # XXX
    return;
}

sub query_param_delete {
    my $self = shift;
    my $key = shift;
    my @old = $self->query_form;
    my @vals;

    for (my $i = @old - 2; $i >= 0; $i -= 2) {
        next if $old[$i] ne $key;
        push(@vals, (splice(@old, $i, 2))[1]);
    }
    $self->query_form(\@old) if @vals;
    return wantarray ? reverse @vals : $vals[-1];
}

sub query_form_hash {
    my $self = shift;
    my @old = $self->query_form;
    if (@_) {
        $self->query_form(@_ == 1 ? %{shift(@_)} : @_);
    }
    my %hash;
    while (my($k, $v) = splice(@old, 0, 2)) {
        if (exists $hash{$k}) {
            for ($hash{$k}) {
                $_ = [$_] unless _is_array($_);
                push(@$_, $v);
            }
        }
        else {
            $hash{$k} = $v;
        }
    }
    return \%hash;
}

sub _is_array {
    return(
        defined($_[0]) &&
        ( Scalar::Util::reftype($_[0]) || '' ) eq "ARRAY" && 
        !(
            Scalar::Util::blessed( $_[0] ) && 
            overload::Method( $_[0], '""' )
        )
    );
}

1;

Filemanager

Name Type Size Permission Actions
file Folder 0755
urn Folder 0755
Escape.pm File 7.73 KB 0644
Heuristic.pm File 6.37 KB 0644
IRI.pm File 794 B 0644
QueryParam.pm File 655 B 0644
Split.pm File 2.3 KB 0644
URL.pm File 5.36 KB 0644
WithBase.pm File 3.77 KB 0644
_foreign.pm File 107 B 0644
_generic.pm File 6.66 KB 0644
_idna.pm File 2.03 KB 0644
_ldap.pm File 3.17 KB 0644
_login.pm File 231 B 0644
_punycode.pm File 5.5 KB 0644
_query.pm File 4.74 KB 0644
_segment.pm File 416 B 0644
_server.pm File 3.79 KB 0644
_userpass.pm File 1.01 KB 0644
data.pm File 3.31 KB 0644
file.pm File 9.46 KB 0644
ftp.pm File 1.06 KB 0644
ftpes.pm File 150 B 0644
ftps.pm File 175 B 0644
geo.pm File 10.5 KB 0644
gopher.pm File 2.37 KB 0644
http.pm File 425 B 0644
https.pm File 144 B 0644
icap.pm File 1.46 KB 0644
icaps.pm File 1.41 KB 0644
irc.pm File 3.64 KB 0644
ircs.pm File 142 B 0644
ldap.pm File 2.86 KB 0644
ldapi.pm File 440 B 0644
ldaps.pm File 144 B 0644
mailto.pm File 1.62 KB 0644
mms.pm File 125 B 0644
news.pm File 1.42 KB 0644
nntp.pm File 127 B 0644
nntps.pm File 144 B 0644
otpauth.pm File 8.31 KB 0644
pop.pm File 1.18 KB 0644
rlogin.pm File 129 B 0644
rsync.pm File 207 B 0644
rtsp.pm File 125 B 0644
rtspu.pm File 126 B 0644
scp.pm File 97 B 0644
sftp.pm File 98 B 0644
sip.pm File 1.63 KB 0644
sips.pm File 143 B 0644
snews.pm File 172 B 0644
ssh.pm File 175 B 0644
telnet.pm File 128 B 0644
tn3270.pm File 128 B 0644
urn.pm File 2.03 KB 0644
Filemanager