__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
package attributes;
our $VERSION = 0.36;
@EXPORT_OK = qw(get reftype);
@EXPORT = ();
%EXPORT_TAGS = (ALL => [@EXPORT, @EXPORT_OK]);
use strict;
sub croak {
require Carp;
goto &Carp::croak;
}
sub carp {
require Carp;
goto &Carp::carp;
}
# Hash of SV type (CODE, SCALAR, etc.) to regex matching deprecated
# attributes for that type.
my %deprecated;
my %msg = (
lvalue => 'lvalue attribute applied to already-defined subroutine',
-lvalue => 'lvalue attribute removed from already-defined subroutine',
const => 'Useless use of attribute "const"',
);
sub _modify_attrs_and_deprecate {
my $svtype = shift;
# After we've removed a deprecated attribute from the XS code, we need to
# remove it here, else it ends up in @badattrs. (If we do the deprecation in
# XS, we can't control the warning based on *our* caller's lexical settings,
# and the warned line is in this package)
grep {
$deprecated{$svtype} && /$deprecated{$svtype}/ ? do {
require warnings;
warnings::warnif('deprecated', "Attribute \"$1\" is deprecated, " .
"and will disappear in Perl 5.28");
0;
} : $svtype eq 'CODE' && exists $msg{$_} ? do {
require warnings;
warnings::warnif(
'misc',
$msg{$_}
);
0;
} : 1
} _modify_attrs(@_);
}
sub import {
@_ > 2 && ref $_[2] or do {
require Exporter;
goto &Exporter::import;
};
my (undef,$home_stash,$svref,@attrs) = @_;
my $svtype = uc reftype($svref);
my $pkgmeth;
$pkgmeth = UNIVERSAL::can($home_stash, "MODIFY_${svtype}_ATTRIBUTES")
if defined $home_stash && $home_stash ne '';
my @badattrs;
if ($pkgmeth) {
my @pkgattrs = _modify_attrs_and_deprecate($svtype, $svref, @attrs);
@badattrs = $pkgmeth->($home_stash, $svref, @pkgattrs);
if (!@badattrs && @pkgattrs) {
require warnings;
return unless warnings::enabled('reserved');
@pkgattrs = grep { m/\A[[:lower:]]+(?:\z|\()/ } @pkgattrs;
if (@pkgattrs) {
for my $attr (@pkgattrs) {
$attr =~ s/\(.+\z//s;
}
my $s = ((@pkgattrs == 1) ? '' : 's');
carp "$svtype package attribute$s " .
"may clash with future reserved word$s: " .
join(' : ' , @pkgattrs);
}
}
}
else {
@badattrs = _modify_attrs_and_deprecate($svtype, $svref, @attrs);
}
if (@badattrs) {
croak "Invalid $svtype attribute" .
(( @badattrs == 1 ) ? '' : 's') .
": " .
join(' : ', @badattrs);
}
}
sub get ($) {
@_ == 1 && ref $_[0] or
croak 'Usage: '.__PACKAGE__.'::get $ref';
my $svref = shift;
my $svtype = uc reftype($svref);
my $stash = _guess_stash($svref);
$stash = caller unless defined $stash;
my $pkgmeth;
$pkgmeth = UNIVERSAL::can($stash, "FETCH_${svtype}_ATTRIBUTES")
if defined $stash && $stash ne '';
return $pkgmeth ?
(_fetch_attrs($svref), $pkgmeth->($stash, $svref)) :
(_fetch_attrs($svref))
;
}
sub require_version { goto &UNIVERSAL::VERSION }
require XSLoader;
XSLoader::load();
1;
__END__
#The POD goes here
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| Carp | Folder | 0755 |
|
|
| Exporter | Folder | 0755 |
|
|
| File | Folder | 0755 |
|
|
| Getopt | Folder | 0755 |
|
|
| Hash | Folder | 0755 |
|
|
| IO | Folder | 0755 |
|
|
| IPC | Folder | 0755 |
|
|
| List | Folder | 0755 |
|
|
| Scalar | Folder | 0755 |
|
|
| Text | Folder | 0755 |
|
|
| Tie | Folder | 0755 |
|
|
| auto | Folder | 0755 |
|
|
| unicore | Folder | 0755 |
|
|
| warnings | Folder | 0755 |
|
|
| AutoLoader.pm | File | 5.36 KB | 0644 |
|
| Carp.pm | File | 24.8 KB | 0644 |
|
| Config.pm | File | 3.24 KB | 0644 |
|
| Config_git.pl | File | 409 B | 0644 |
|
| Config_heavy.pl | File | 57.4 KB | 0644 |
|
| Cwd.pm | File | 16.95 KB | 0644 |
|
| DynaLoader.pm | File | 11 KB | 0644 |
|
| Errno.pm | File | 4.8 KB | 0644 |
|
| Exporter.pm | File | 2.28 KB | 0644 |
|
| Fcntl.pm | File | 2.17 KB | 0644 |
|
| FileHandle.pm | File | 2.06 KB | 0644 |
|
| IO.pm | File | 469 B | 0644 |
|
| POSIX.pm | File | 19.96 KB | 0644 |
|
| SelectSaver.pm | File | 344 B | 0644 |
|
| Socket.pm | File | 14.74 KB | 0644 |
|
| Symbol.pm | File | 2.15 KB | 0644 |
|
| XSLoader.pm | File | 4.02 KB | 0644 |
|
| attributes.pm | File | 3 KB | 0644 |
|
| base.pm | File | 8.7 KB | 0644 |
|
| builtin.pm | File | 210 B | 0644 |
|
| bytes.pm | File | 569 B | 0644 |
|
| constant.pm | File | 5.6 KB | 0644 |
|
| feature.pm | File | 7.9 KB | 0644 |
|
| fields.pm | File | 4.89 KB | 0644 |
|
| integer.pm | File | 172 B | 0644 |
|
| lib.pm | File | 2.23 KB | 0644 |
|
| locale.pm | File | 3.37 KB | 0644 |
|
| overload.pm | File | 4.74 KB | 0644 |
|
| overloading.pm | File | 964 B | 0644 |
|
| parent.pm | File | 460 B | 0644 |
|
| re.pm | File | 9.33 KB | 0644 |
|
| strict.pm | File | 1.57 KB | 0644 |
|
| utf8.pm | File | 341 B | 0644 |
|
| vars.pm | File | 1.12 KB | 0644 |
|
| warnings.pm | File | 30.04 KB | 0644 |
|