����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
#
# Copyright (c) 1995-2000, Raphael Manfredi
#
# You may redistribute only under the same terms as Perl 5, as specified
# in the README file that comes with the distribution.
#
package dump;
use Carp;
%dump = (
'SCALAR' => 'dump_scalar',
'LVALUE' => 'dump_scalar',
'ARRAY' => 'dump_array',
'HASH' => 'dump_hash',
'REF' => 'dump_ref',
);
# Given an object, dump its transitive data closure
sub main::dump {
my ($object) = @_;
croak "Not a reference!" unless ref($object);
local %dumped;
local %object;
local $count = 0;
local $dumped = '';
&recursive_dump($object, 1);
return $dumped;
}
# This is the root recursive dumping routine that may indirectly be
# called by one of the routine it calls...
# The link parameter is set to false when the reference passed to
# the routine is an internal temporary variable, implying the object's
# address is not to be dumped in the %dumped table since it's not a
# user-visible object.
sub recursive_dump {
my ($object, $link) = @_;
# Get something like SCALAR(0x...) or TYPE=SCALAR(0x...).
# Then extract the bless, ref and address parts of that string.
my $what = "$object"; # Stringify
my ($bless, $ref, $addr) = $what =~ /^(\w+)=(\w+)\((0x.*)\)$/;
($ref, $addr) = $what =~ /^(\w+)\((0x.*)\)$/ unless $bless;
# Special case for references to references. When stringified,
# they appear as being scalars. However, ref() correctly pinpoints
# them as being references indirections. And that's it.
$ref = 'REF' if ref($object) eq 'REF';
# Make sure the object has not been already dumped before.
# We don't want to duplicate data. Retrieval will know how to
# relink from the previously seen object.
if ($link && $dumped{$addr}++) {
my $num = $object{$addr};
$dumped .= "OBJECT #$num seen\n";
return;
}
my $objcount = $count++;
$object{$addr} = $objcount;
# Call the appropriate dumping routine based on the reference type.
# If the referenced was blessed, we bless it once the object is dumped.
# The retrieval code will perform the same on the last object retrieved.
croak "Unknown simple type '$ref'" unless defined $dump{$ref};
&{$dump{$ref}}($object); # Dump object
&bless($bless) if $bless; # Mark it as blessed, if necessary
$dumped .= "OBJECT $objcount\n";
}
# Indicate that current object is blessed
sub bless {
my ($class) = @_;
$dumped .= "BLESS $class\n";
}
# Dump single scalar
sub dump_scalar {
my ($sref) = @_;
my $scalar = $$sref;
unless (defined $scalar) {
$dumped .= "UNDEF\n";
return;
}
my $len = length($scalar);
$dumped .= "SCALAR len=$len $scalar\n";
}
# Dump array
sub dump_array {
my ($aref) = @_;
my $items = 0 + @{$aref};
$dumped .= "ARRAY items=$items\n";
foreach $item (@{$aref}) {
unless (defined $item) {
$dumped .= 'ITEM_UNDEF' . "\n";
next;
}
$dumped .= 'ITEM ';
&recursive_dump(\$item, 1);
}
}
# Dump hash table
sub dump_hash {
my ($href) = @_;
my $items = scalar(keys %{$href});
$dumped .= "HASH items=$items\n";
foreach $key (sort keys %{$href}) {
$dumped .= 'KEY ';
&recursive_dump(\$key, undef);
unless (defined $href->{$key}) {
$dumped .= 'VALUE_UNDEF' . "\n";
next;
}
$dumped .= 'VALUE ';
&recursive_dump(\$href->{$key}, 1);
}
}
# Dump reference to reference
sub dump_ref {
my ($rref) = @_;
my $deref = $$rref; # Follow reference to reference
$dumped .= 'REF ';
&recursive_dump($deref, 1); # $dref is a reference
}
1;
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| CVE-2015-1592.t | File | 534 B | 0644 |
|
| HAS_ATTACH.pm | File | 121 B | 0644 |
|
| HAS_HOOK.pm | File | 82 B | 0644 |
|
| HAS_OVERLOAD.pm | File | 185 B | 0644 |
|
| attach.t | File | 1007 B | 0644 |
|
| attach_errors.t | File | 6.64 KB | 0644 |
|
| attach_singleton.t | File | 2.5 KB | 0644 |
|
| blessed.t | File | 10.52 KB | 0644 |
|
| canonical.t | File | 3.46 KB | 0644 |
|
| circular_hook.t | File | 1.98 KB | 0644 |
|
| code.t | File | 7.29 KB | 0644 |
|
| compat01.t | File | 1.15 KB | 0644 |
|
| compat06.t | File | 3.25 KB | 0644 |
|
| croak.t | File | 949 B | 0644 |
|
| dclone.t | File | 2.28 KB | 0644 |
|
| destroy.t | File | 366 B | 0644 |
|
| downgrade.t | File | 15.76 KB | 0644 |
|
| file_magic.t | File | 13.23 KB | 0644 |
|
| flags.t | File | 2.32 KB | 0644 |
|
| forgive.t | File | 1.52 KB | 0644 |
|
| freeze.t | File | 2.55 KB | 0644 |
|
| huge.t | File | 3.22 KB | 0644 |
|
| hugeids.t | File | 7.61 KB | 0644 |
|
| integer.t | File | 5.81 KB | 0644 |
|
| interwork56.t | File | 5.95 KB | 0644 |
|
| just_plain_nasty.t | File | 4.29 KB | 0644 |
|
| leaks.t | File | 845 B | 0644 |
|
| lock.t | File | 1.01 KB | 0644 |
|
| make_56_interwork.pl | File | 1.45 KB | 0644 |
|
| make_downgrade.pl | File | 2.09 KB | 0644 |
|
| make_overload.pl | File | 177 B | 0644 |
|
| malice.t | File | 10.33 KB | 0644 |
|
| overload.t | File | 2.08 KB | 0644 |
|
| recurse.t | File | 7.92 KB | 0644 |
|
| regexp.t | File | 3.66 KB | 0644 |
|
| restrict.t | File | 3.49 KB | 0644 |
|
| retrieve.t | File | 3.02 KB | 0644 |
|
| robust.t | File | 309 B | 0644 |
|
| sig_die.t | File | 734 B | 0644 |
|
| st-dump.pl | File | 3.35 KB | 0644 |
|
| store.t | File | 3.25 KB | 0644 |
|
| testlib.pl | File | 863 B | 0644 |
|
| threads.t | File | 1.93 KB | 0644 |
|
| tied.t | File | 4.15 KB | 0644 |
|
| tied_hook.t | File | 4.63 KB | 0644 |
|
| tied_items.t | File | 1.11 KB | 0644 |
|
| tied_reify.t | File | 621 B | 0644 |
|
| tied_store.t | File | 924 B | 0644 |
|
| utf8.t | File | 1.17 KB | 0644 |
|
| utf8hash.t | File | 5.31 KB | 0644 |
|
| weak.t | File | 3.72 KB | 0644 |
|