晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /usr/share/perl5/ |
Upload File : |
package deprecate;
use strict;
use warnings;
our $VERSION = 0.03;
# our %Config can ignore %Config::Config, e.g. for testing
our %Config;
unless (%Config) { require Config; *Config = \%Config::Config; }
# This isn't a public API. It's internal to code maintained by the perl-porters
# If you would like it to be a public API, please send a patch with
# documentation and tests. Until then, it may change without warning.
sub __loaded_from_core {
my ($package, $file, $expect_leaf) = @_;
foreach my $pair ([qw(sitearchexp archlibexp)],
[qw(sitelibexp privlibexp)]) {
my ($site, $priv) = @Config{@$pair};
if ($^O eq 'VMS') {
for my $d ($site, $priv) { $d = VMS::Filespec::unixify($d) };
}
# Just in case anyone managed to configure with trailing /s
s!/*$!!g foreach $site, $priv;
next if $site eq $priv;
if (uc("$priv/$expect_leaf") eq uc($file)) {
return 1;
}
}
return 0;
}
sub import {
my ($package, $file) = caller;
my $expect_leaf = "$package.pm";
$expect_leaf =~ s!::!/!g;
if (__loaded_from_core($package, $file, $expect_leaf)) {
my $call_depth=1;
my @caller;
while (@caller = caller $call_depth++) {
last if $caller[7] # use/require
and $caller[6] eq $expect_leaf; # the package file
}
unless (@caller) {
require Carp;
Carp::cluck(<<"EOM");
Can't find use/require $expect_leaf in caller stack
EOM
return;
}
# This is fragile, because it
# is directly poking in the internals of warnings.pm
my ($call_file, $call_line, $callers_bitmask) = @caller[1,2,9];
if (defined $callers_bitmask
&& (vec($callers_bitmask, $warnings::Offsets{deprecated}, 1)
|| vec($callers_bitmask, $warnings::Offsets{all}, 1))) {
warn <<"EOM";
$package will be removed from the Perl core distribution in the next major release. Please install it from CPAN. It is being used at $call_file, line $call_line.
EOM
}
}
}
1;
__END__
=head1 NAME
deprecate - Perl pragma for deprecating the core version of a module
=head1 SYNOPSIS
use deprecate; # always deprecate the module in which this occurs
use if $] > 5.010, 'deprecate'; # conditionally deprecate the module
=head1 DESCRIPTION
This module is used using C<use deprecate;> (or something that calls
C<< deprecate->import() >>, for example C<use if COND, deprecate;>).
If the module that includes C<use deprecate> is located in a core library
directory, a deprecation warning is issued, encouraging the user to use
the version on CPAN. If that module is located in a site library, it is
the CPAN version, and no warning is issued.
=head2 EXPORT
None by default. The only method is C<import>, called by C<use deprecate;>.
=head1 SEE ALSO
First example to C<use deprecate;> was L<Switch>.
=head1 AUTHOR
Original version by Nicholas Clark
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2009, 2011
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.10.0 or,
at your option, any later version of Perl 5 you may have available.
=cut