晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/proc/thread-self/root/proc/thread-self/root/usr/local/lib64/perl5/Template/Plugin/ |
| Current File : //proc/thread-self/root/proc/thread-self/root/usr/local/lib64/perl5/Template/Plugin/Math.pm |
#============================================================= -*-Perl-*-
#
# Template::Plugin::Math
#
# DESCRIPTION
# Plugin implementing numerous mathematical functions.
#
# AUTHORS
# Andy Wardley <abw@wardley.org>
#
# COPYRIGHT
# Copyright (C) 2002-2022 Andy Wardley. All Rights Reserved.
#
# This module is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.
#
#============================================================================
package Template::Plugin::Math;
use strict;
use warnings;
use base 'Template::Plugin';
our $VERSION = '3.100';
our $AUTOLOAD;
#------------------------------------------------------------------------
# new($context, \%config)
#
# This constructor method creates a simple, empty object to act as a
# receiver for future object calls. No doubt there are many interesting
# configuration options that might be passed, but I'll leave that for
# someone more knowledgable in these areas to contribute...
#------------------------------------------------------------------------
sub new {
my ($class, $context, $config) = @_;
$config ||= { };
bless {
%$config,
}, $class;
}
sub abs { shift; CORE::abs($_[0]); }
sub atan2 { shift; CORE::atan2($_[0], $_[1]); } # prototyped (ugg)
sub cos { shift; CORE::cos($_[0]); }
sub exp { shift; CORE::exp($_[0]); }
sub hex { shift; CORE::hex($_[0]); }
sub int { shift; CORE::int($_[0]); }
sub log { shift; CORE::log($_[0]); }
sub oct { shift; CORE::oct($_[0]); }
sub rand { shift; @_ ? CORE::rand($_[0]) : CORE::rand(); }
sub sin { shift; CORE::sin($_[0]); }
sub sqrt { shift; CORE::sqrt($_[0]); }
sub srand { shift; @_ ? CORE::srand($_[0]) : CORE::srand(); }
# Use the Math::TrulyRandom module
# XXX This is *sloooooooowwwwwwww*
sub truly_random {
eval { require Math::TrulyRandom; }
or die(Template::Exception->new("plugin",
"Can't load Math::TrulyRandom"));
return Math::TrulyRandom::truly_random_value();
}
eval {
require Math::Trig;
no strict qw(refs);
for my $trig_func (@Math::Trig::EXPORT) {
my $sub = Math::Trig->can($trig_func);
*{$trig_func} = sub { shift; &$sub(@_) };
}
};
# To catch errors from a missing Math::Trig
sub AUTOLOAD { return; }
1;
__END__
=head1 NAME
Template::Plugin::Math - Plugin providing mathematical functions
=head1 SYNOPSIS
[% USE Math %]
[% Math.sqrt(9) %]
=head1 DESCRIPTION
The Math plugin provides numerous mathematical functions for use
within templates.
=head1 METHODS
C<Template::Plugin::Math> makes available the following functions from
the Perl core:
=over 4
=item abs
=item atan2
=item cos
=item exp
=item hex
=item int
=item log
=item oct
=item rand
=item sin
=item sqrt
=item srand
=back
In addition, if the L<Math::Trig> module can be loaded, the following
functions are also available:
=over 4
=item pi
=item tan
=item csc
=item cosec
=item sec
=item cot
=item cotan
=item asin
=item acos
=item atan
=item acsc
=item acosec
=item asec
=item acot
=item acotan
=item sinh
=item cosh
=item tanh
=item csch
=item cosech
=item sech
=item coth
=item cotanh
=item asinh
=item acosh
=item atanh
=item acsch
=item acosech
=item asech
=item acoth
=item acotanh
=item rad2deg
=item rad2grad
=item deg2rad
=item deg2grad
=item grad2rad
=item grad2deg
=back
If the L<Math::TrulyRandom> module is available, and you've got the time
to wait, the C<truly_random_number> method is available:
[% Math.truly_random_number %]
=head1 AUTHOR
Andy Wardley E<lt>abw@wardley.orgE<gt> L<http://wardley.org/>
=head1 COPYRIGHT
Copyright (C) 1996-2022 Andy Wardley. All Rights Reserved.
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
=head1 SEE ALSO
L<Template::Plugin>
=cut
# Local Variables:
# mode: perl
# perl-indent-level: 4
# indent-tabs-mode: nil
# End:
#
# vim: expandtab shiftwidth=4:
|