__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
# -*- mode: Perl; buffer-read-only: t -*-
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
# This file is built by regen/feature.pl.
# Any changes made here will be lost!
package feature;
our $VERSION = '1.89';
our %feature = (
fc => 'feature_fc',
isa => 'feature_isa',
say => 'feature_say',
try => 'feature_try',
class => 'feature_class',
defer => 'feature_defer',
state => 'feature_state',
switch => 'feature_switch',
bitwise => 'feature_bitwise',
indirect => 'feature_indirect',
evalbytes => 'feature_evalbytes',
signatures => 'feature_signatures',
current_sub => 'feature___SUB__',
module_true => 'feature_module_true',
refaliasing => 'feature_refaliasing',
postderef_qq => 'feature_postderef_qq',
unicode_eval => 'feature_unieval',
declared_refs => 'feature_myref',
unicode_strings => 'feature_unicode',
multidimensional => 'feature_multidimensional',
bareword_filehandles => 'feature_bareword_filehandles',
extra_paired_delimiters => 'feature_more_delims',
);
our %feature_bundle = (
"5.10" => [qw(bareword_filehandles indirect multidimensional say state switch)],
"5.11" => [qw(bareword_filehandles indirect multidimensional say state switch unicode_strings)],
"5.15" => [qw(bareword_filehandles current_sub evalbytes fc indirect multidimensional say state switch unicode_eval unicode_strings)],
"5.23" => [qw(bareword_filehandles current_sub evalbytes fc indirect multidimensional postderef_qq say state switch unicode_eval unicode_strings)],
"5.27" => [qw(bareword_filehandles bitwise current_sub evalbytes fc indirect multidimensional postderef_qq say state switch unicode_eval unicode_strings)],
"5.35" => [qw(bareword_filehandles bitwise current_sub evalbytes fc isa postderef_qq say signatures state unicode_eval unicode_strings)],
"5.37" => [qw(bitwise current_sub evalbytes fc isa module_true postderef_qq say signatures state unicode_eval unicode_strings)],
"5.39" => [qw(bitwise current_sub evalbytes fc isa module_true postderef_qq say signatures state try unicode_eval unicode_strings)],
"all" => [qw(bareword_filehandles bitwise class current_sub declared_refs defer evalbytes extra_paired_delimiters fc indirect isa module_true multidimensional postderef_qq refaliasing say signatures state switch try unicode_eval unicode_strings)],
"default" => [qw(bareword_filehandles indirect multidimensional)],
);
$feature_bundle{"5.12"} = $feature_bundle{"5.11"};
$feature_bundle{"5.13"} = $feature_bundle{"5.11"};
$feature_bundle{"5.14"} = $feature_bundle{"5.11"};
$feature_bundle{"5.16"} = $feature_bundle{"5.15"};
$feature_bundle{"5.17"} = $feature_bundle{"5.15"};
$feature_bundle{"5.18"} = $feature_bundle{"5.15"};
$feature_bundle{"5.19"} = $feature_bundle{"5.15"};
$feature_bundle{"5.20"} = $feature_bundle{"5.15"};
$feature_bundle{"5.21"} = $feature_bundle{"5.15"};
$feature_bundle{"5.22"} = $feature_bundle{"5.15"};
$feature_bundle{"5.24"} = $feature_bundle{"5.23"};
$feature_bundle{"5.25"} = $feature_bundle{"5.23"};
$feature_bundle{"5.26"} = $feature_bundle{"5.23"};
$feature_bundle{"5.28"} = $feature_bundle{"5.27"};
$feature_bundle{"5.29"} = $feature_bundle{"5.27"};
$feature_bundle{"5.30"} = $feature_bundle{"5.27"};
$feature_bundle{"5.31"} = $feature_bundle{"5.27"};
$feature_bundle{"5.32"} = $feature_bundle{"5.27"};
$feature_bundle{"5.33"} = $feature_bundle{"5.27"};
$feature_bundle{"5.34"} = $feature_bundle{"5.27"};
$feature_bundle{"5.36"} = $feature_bundle{"5.35"};
$feature_bundle{"5.38"} = $feature_bundle{"5.37"};
$feature_bundle{"5.40"} = $feature_bundle{"5.39"};
$feature_bundle{"5.9.5"} = $feature_bundle{"5.10"};
my %noops = (
postderef => 1,
lexical_subs => 1,
);
my %removed = (
array_base => 1,
);
our $hint_shift = 26;
our $hint_mask = 0x3c000000;
our @hint_bundles = qw( default 5.10 5.11 5.15 5.23 5.27 5.35 5.37 5.39 );
# This gets set (for now) in $^H as well as in %^H,
# for runtime speed of the uc/lc/ucfirst/lcfirst functions.
# See HINT_UNI_8_BIT in perl.h.
our $hint_uni8bit = 0x00000800;
# TODO:
# - think about versioned features (use feature switch => 2)
sub import {
shift;
if (!@_) {
croak("No features specified");
}
__common(1, @_);
}
sub unimport {
shift;
# A bare C<no feature> should reset to the default bundle
if (!@_) {
$^H &= ~($hint_uni8bit|$hint_mask);
return;
}
__common(0, @_);
}
sub __common {
my $import = shift;
my $bundle_number = $^H & $hint_mask;
my $features = $bundle_number != $hint_mask
&& $feature_bundle{$hint_bundles[$bundle_number >> $hint_shift]};
if ($features) {
# Features are enabled implicitly via bundle hints.
# Delete any keys that may be left over from last time.
delete @^H{ values(%feature) };
$^H |= $hint_mask;
for (@$features) {
$^H{$feature{$_}} = 1;
$^H |= $hint_uni8bit if $_ eq 'unicode_strings';
}
}
while (@_) {
my $name = shift;
if (substr($name, 0, 1) eq ":") {
my $v = substr($name, 1);
if (!exists $feature_bundle{$v}) {
$v =~ s/^([0-9]+)\.([0-9]+).[0-9]+$/$1.$2/;
if (!exists $feature_bundle{$v}) {
unknown_feature_bundle(substr($name, 1));
}
}
unshift @_, @{$feature_bundle{$v}};
next;
}
if (!exists $feature{$name}) {
if (exists $noops{$name}) {
next;
}
if (!$import && exists $removed{$name}) {
next;
}
unknown_feature($name);
}
if ($import) {
$^H{$feature{$name}} = 1;
$^H |= $hint_uni8bit if $name eq 'unicode_strings';
} else {
delete $^H{$feature{$name}};
$^H &= ~ $hint_uni8bit if $name eq 'unicode_strings';
}
}
}
sub unknown_feature {
my $feature = shift;
croak(sprintf('Feature "%s" is not supported by Perl %vd',
$feature, $^V));
}
sub unknown_feature_bundle {
my $feature = shift;
croak(sprintf('Feature bundle "%s" is not supported by Perl %vd',
$feature, $^V));
}
sub croak {
require Carp;
Carp::croak(@_);
}
sub features_enabled {
my ($depth) = @_;
$depth //= 1;
my @frame = caller($depth+1)
or return;
my ($hints, $hinthash) = @frame[8, 10];
my $bundle_number = $hints & $hint_mask;
if ($bundle_number != $hint_mask) {
return $feature_bundle{$hint_bundles[$bundle_number >> $hint_shift]}->@*;
}
else {
my @features;
for my $feature (sort keys %feature) {
if ($hinthash->{$feature{$feature}}) {
push @features, $feature;
}
}
return @features;
}
}
sub feature_enabled {
my ($feature, $depth) = @_;
$depth //= 1;
my @frame = caller($depth+1)
or return;
my ($hints, $hinthash) = @frame[8, 10];
my $hint_feature = $feature{$feature}
or croak "Unknown feature $feature";
my $bundle_number = $hints & $hint_mask;
if ($bundle_number != $hint_mask) {
my $bundle = $hint_bundles[$bundle_number >> $hint_shift];
for my $bundle_feature ($feature_bundle{$bundle}->@*) {
return 1 if $bundle_feature eq $feature;
}
return 0;
}
else {
return $hinthash->{$hint_feature} // 0;
}
}
sub feature_bundle {
my $depth = shift;
$depth //= 1;
my @frame = caller($depth+1)
or return;
my $bundle_number = $frame[8] & $hint_mask;
if ($bundle_number != $hint_mask) {
return $hint_bundles[$bundle_number >> $hint_shift];
}
else {
return undef;
}
}
1;
# ex: set ro ft=perl:
| 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 |
|