/usr/share/perl5/Aspect/Pointcut/Highest.pm is in libaspect-perl 1.04-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | package Aspect::Pointcut::Highest;
use strict;
use Carp ();
use Scalar::Util ();
use Params::Util ();
use Aspect::Guard ();
use Aspect::Pointcut ();
our $VERSION = '1.04';
our @ISA = 'Aspect::Pointcut';
######################################################################
# Constructor Methods
sub new {
bless [ ], $_[0];
}
######################################################################
# Weaving Methods
# The highest pointcut is a run-time only pointcut
sub curry_weave {
return;
}
# Call pointcuts curry away to null, because they are the basis
# for which methods to hook in the first place. Any method called
# at run-time has already been checked.
sub curry_runtime {
bless [ 0 ], $_[0];
}
######################################################################
# Runtime Methods
sub compile_runtime {
my $depth = 0;
return sub {
$_->{highest} = Aspect::Guard->new( sub { $depth-- } );
return ! $depth++;
};
}
1;
__END__
=pod
=head1 NAME
Aspect::Pointcut::Highest - Pointcut for preventing recursive matching
=head1 SYNOPSIS
use Aspect;
# High-level creation
my $pointcut1 = highest;
# Manual creation
my $pointcut2 = Aspect::Pointcut::Highest->new;
=head1 DESCRIPTION
For aspects including timers and other L<Aspect::Advice::Around|around>-based
advice, recursion can be significant problem.
The C<highest> pointcut solves this problem by matching only on the highest
invocation of a function. If the function is called again recursively within
the first call, at any depth, the deeper calls will be not match and the
advice will not be executed.
=head1 AUTHORS
Adam Kennedy E<lt>adamk@cpan.orgE<gt>
Marcel GrE<uuml>nauer E<lt>marcel@cpan.orgE<gt>
Ran Eilam E<lt>eilara@cpan.orgE<gt>
=head1 COPYRIGHT
Copyright 2001 by Marcel GrE<uuml>nauer
Some parts copyright 2009 - 2013 Adam Kennedy.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
|