indirect - Lexically warn about using the indirect method call syntax.
VERSION
- Version 0.30
+ Version 0.39
SYNOPSIS
In a script :
The indirect syntax is now considered harmful, since its parsing has
many quirks and its use is error prone : when the subroutine "foo" has
not been declared in the current package, "foo $x" actually compiles to
- "$x->foo", and "foo { key => 1 }" to "'key'->foo(1)". In
- <http://www.shadowcat.co.uk/blog/matt-s-trout/indirect-but-still-fatal>,
- Matt S. Trout gives an example of an undesirable indirect method call on
- a block that can cause a particularly bewildering error.
+ "$x->foo", and "foo { key => 1 }" to "'key'->foo(1)". Please refer to
+ the "REFERENCES" section for a more complete list of reasons for
+ avoiding this construct.
This pragma currently does not warn for core functions ("print", "say",
"exec" or "system"). This may change in the future, or may be added as
The search for indirect method calls happens before constant folding.
Hence "my $x = new Class if 0" will be caught.
+REFERENCES
+ Numerous articles have been written about the quirks of the indirect
+ object construct :
+
+ * <http://markmail.org/message/o7d5sxnydya7bwvv> : Far More Than
+ Everything You've Ever Wanted to Know about the Indirect Object
+ syntax, Tom Christiansen, 1998-01-28.
+
+ This historical post to the "perl5-porters" mailing list raised
+ awareness about the perils of this syntax.
+
+ * <http://www.shadowcat.co.uk/blog/matt-s-trout/indirect-but-still-fat
+ al> : Indirect but still fatal, Matt S. Trout, 2009-07-29.
+
+ In this blog post, the author gives an example of an undesirable
+ indirect method call on a block that causes a particularly
+ bewildering error.
+
DEPENDENCIES
perl 5.8.1.
A C compiler. This module may happen to build with a C++ compiler as
well, but don't rely on it, as no guarantee is made in this regard.
- Carp (standard since perl 5), XSLoader (since perl 5.006).
+ Carp (standard since perl 5), XSLoader (since perl 5.6.0).
AUTHOR
- Vincent Pit, "<perl at profvince.com>", <http://www.profvince.com>.
+ Vincent Pit "<vpit@cpan.org>".
You can contact me by mail or on "irc.perl.org" (vincent).
perldoc indirect
- Tests code coverage report is available at
- <http://www.profvince.com/perl/cover/indirect>.
-
ACKNOWLEDGEMENTS
Bram, for motivation and advices.
reporting issues.
COPYRIGHT & LICENSE
- Copyright 2008,2009,2010,2011,2012,2013 Vincent Pit, all rights
- reserved.
+ Copyright 2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2019 Vincent
+ Pit, all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.