/snap/gh/502/usr/share/perl/5.26.1
NameSizeModeActions
App/-0755rm
Archive/-0755rm
Attribute/-0755rm
autodie/-0755rm
B/-0755rm
Carp/-0755rm
Class/-0755rm
Compress/-0755rm
Config/-0755rm
CPAN/-0755rm
DBM_Filter/-0755rm
Devel/-0755rm
Digest/-0755rm
Encode/-0755rm
encoding/-0755rm
Exporter/-0755rm
ExtUtils/-0755rm
File/-0755rm
Filter/-0755rm
Getopt/-0755rm
HTTP/-0755rm
I18N/-0755rm
IO/-0755rm
IPC/-0755rm
JSON/-0755rm
Locale/-0755rm
Math/-0755rm
Memoize/-0755rm
Module/-0755rm
Net/-0755rm
overload/-0755rm
Params/-0755rm
Parse/-0755rm
Perl/-0755rm
PerlIO/-0755rm
Pod/-0755rm
pod/-0755rm
Search/-0755rm
TAP/-0755rm
Term/-0755rm
Test/-0755rm
Test2/-0755rm
Text/-0755rm
Thread/-0755rm
Tie/-0755rm
Time/-0755rm
Unicode/-0755rm
unicore/-0755rm
User/-0755rm
version/-0755rm
warnings/-0755rm
AnyDBM_File.pm26180644editdlrm
autodie.pm128860644editdlrm
AutoLoader.pm54870644editdlrm
AutoSplit.pm196370644editdlrm
autouse.pm42380644editdlrm
base.pm89310644editdlrm
Benchmark.pm310250644editdlrm
bigint.pm233980644editdlrm
bignum.pm211370644editdlrm
bigrat.pm161540644editdlrm
blib.pm20860644editdlrm
bytes.pm4470644editdlrm
bytes_heavy.pl7580644editdlrm
Carp.pm201480644editdlrm
charnames.pm208670644editdlrm
constant.pm57370644editdlrm
CORE.pod31880644editdlrm
CPAN.pm1414340644editdlrm
DB.pm189220644editdlrm
DBM_Filter.pm143850644editdlrm
deprecate.pm35100644editdlrm
diagnostics.pm190380644editdlrm
Digest.pm107010644editdlrm
DirHandle.pm15560644editdlrm
Dumpvalue.pm175560644editdlrm
dumpvar.pl155550644editdlrm
English.pm47610644editdlrm
Env.pm55240644editdlrm
experimental.pm57950644editdlrm
Exporter.pm23670644editdlrm
Fatal.pm582800644editdlrm
feature.pm44960644editdlrm
fields.pm50220644editdlrm
FileCache.pm55720644editdlrm
FileHandle.pm21110644editdlrm
filetest.pm40030644editdlrm
FindBin.pm45610644editdlrm
if.pm33400644editdlrm
integer.pm1720644editdlrm
Internals.pod25760644editdlrm
less.pm32040644editdlrm
locale.pm34210644editdlrm
Memoize.pm361920644editdlrm
meta_notation.pm21170644editdlrm
NEXT.pm188460644editdlrm
ok.pm9670644editdlrm
open.pm80210644editdlrm
overload.pm44410644editdlrm
overloading.pm9640644editdlrm
parent.pm4780644editdlrm
perl5db.pl3164300644editdlrm
perlfaq.pm780644editdlrm
PerlIO.pm104590644editdlrm
Safe.pm250820644editdlrm
SelectSaver.pm3440644editdlrm
SelfLoader.pm176920644editdlrm
sigtrap.pm76060644editdlrm
sort.pm60810644editdlrm
strict.pm16060644editdlrm
subs.pm8480644editdlrm
Symbol.pm20990644editdlrm
Test.pm300570644editdlrm
Test2.pm63930644editdlrm
Thread.pm82870644editdlrm
UNIVERSAL.pm65940644editdlrm
utf8.pm3420644editdlrm
utf8_heavy.pl316150644editdlrm
vars.pm11490644editdlrm
version.pm17150644editdlrm
version.pod98600644editdlrm
vmsish.pm43130644editdlrm
warnings.pm219500644editdlrm
XSLoader.pm39190644editdlrm
_charnames.pm331660644editdlrm
Edit: /snap/gh/502/usr/share/perl/5.26.1/experimental.pm (5795B)
package experimental; $experimental::VERSION = '0.016'; use strict; use warnings; use version (); use feature (); use Carp qw/croak carp/; my %warnings = map { $_ => 1 } grep { /^experimental::/ } keys %warnings::Offsets; my %features = map { $_ => 1 } $] > 5.015006 ? keys %feature::feature : do { my @features; if ($] >= 5.010) { push @features, qw/switch say state/; push @features, 'unicode_strings' if $] > 5.011002; } @features; }; my %min_version = ( array_base => '5', autoderef => '5.14.0', bitwise => '5.22.0', current_sub => '5.16.0', evalbytes => '5.16.0', fc => '5.16.0', lexical_topic => '5.10.0', lexical_subs => '5.18.0', postderef => '5.20.0', postderef_qq => '5.20.0', refaliasing => '5.22.0', regex_sets => '5.18.0', say => '5.10.0', smartmatch => '5.10.0', signatures => '5.20.0', state => '5.10.0', switch => '5.10.0', unicode_eval => '5.16.0', unicode_strings => '5.12.0', ); my %max_version = ( lexical_topic => '5.23.4', ); $_ = version->new($_) for values %min_version; $_ = version->new($_) for values %max_version; my %additional = ( postderef => ['postderef_qq'], switch => ['smartmatch'], ); sub _enable { my $pragma = shift; if ($warnings{"experimental::$pragma"}) { warnings->unimport("experimental::$pragma"); feature->import($pragma) if exists $features{$pragma}; _enable(@{ $additional{$pragma} }) if $additional{$pragma}; } elsif ($features{$pragma}) { feature->import($pragma); _enable(@{ $additional{$pragma} }) if $additional{$pragma}; } elsif (not exists $min_version{$pragma}) { croak "Can't enable unknown feature $pragma"; } elsif ($] < $min_version{$pragma}) { my $stable = $min_version{$pragma}; if ($stable->{version}[1] % 2) { $stable = version->new( "5.".($stable->{version}[1]+1).'.0' ); } croak "Need perl $stable or later for feature $pragma"; } elsif ($] >= ($max_version{$pragma} || 7)) { croak "Experimental feature $pragma has been removed from perl in version $max_version{$pragma}"; } } sub import { my ($self, @pragmas) = @_; for my $pragma (@pragmas) { _enable($pragma); } return; } sub _disable { my $pragma = shift; if ($warnings{"experimental::$pragma"}) { warnings->import("experimental::$pragma"); feature->unimport($pragma) if exists $features{$pragma}; _disable(@{ $additional{$pragma} }) if $additional{$pragma}; } elsif ($features{$pragma}) { feature->unimport($pragma); _disable(@{ $additional{$pragma} }) if $additional{$pragma}; } elsif (not exists $min_version{$pragma}) { carp "Can't disable unknown feature $pragma, ignoring"; } } sub unimport { my ($self, @pragmas) = @_; for my $pragma (@pragmas) { _disable($pragma); } return; } 1; #ABSTRACT: Experimental features made easy __END__ =pod =encoding UTF-8 =head1 NAME experimental - Experimental features made easy =head1 VERSION version 0.016 =head1 SYNOPSIS use experimental 'lexical_subs', 'smartmatch'; my sub foo { $_[0] ~~ 1 } =head1 DESCRIPTION This pragma provides an easy and convenient way to enable or disable experimental features. Every version of perl has some number of features present but considered "experimental." For much of the life of Perl 5, this was only a designation found in the documentation. Starting in Perl v5.10.0, and more aggressively in v5.18.0, experimental features were placed behind pragmata used to enable the feature and disable associated warnings. The C pragma exists to combine the required incantations into a single interface stable across releases of perl. For every experimental feature, this should enable the feature and silence warnings for the enclosing lexical scope: use experimental 'feature-name'; To disable the feature and, if applicable, re-enable any warnings, use: no experimental 'feature-name'; The supported features, documented further below, are: array_base - allow the use of $[ to change the starting index of @array autoderef - allow push, each, keys, and other built-ins on references lexical_topic - allow the use of lexical $_ via "my $_" postderef - allow the use of postfix dereferencing expressions, including in interpolating strings refaliasing - allow aliasing via \$x = \$y regex_sets - allow extended bracketed character classes in regexps signatures - allow subroutine signatures (for named arguments) smartmatch - allow the use of ~~ switch - allow the use of ~~, given, and when =head2 Ordering matters Using this pragma to 'enable an experimental feature' is another way of saying that this pragma will disable the warnings which would result from using that feature. Therefore, the order in which pragmas are applied is important. In particular, you probably want to enable experimental features I you enable warnings: use warnings; use experimental 'smartmatch'; You also need to take care with modules that enable warnings for you. A common example being Moose. In this example, warnings for the 'smartmatch' feature are first turned on by the warnings pragma, off by the experimental pragma and back on again by the Moose module (fix is to switch the last two lines): use warnings; use experimental 'smartmatch'; use Moose; =head2 Disclaimer Because of the nature of the features it enables, forward compatibility can not be guaranteed in any way. =head1 AUTHOR Leon Timmermans =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Leon Timmermans. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut