X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Findirect.git;a=blobdiff_plain;f=README;h=f2153cfdb5f0557d0530f6686f11d1f35f9c9ffa;hp=3807d3b2cefc53d725e9cd962961d551a8586b98;hb=7645d1927c141596242b284b6fba4213264e5775;hpb=1dba01eb690ca7a41744d6756ae257a9aa44586d diff --git a/README b/README index 3807d3b..f2153cf 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ NAME indirect - Lexically warn about using the indirect method call syntax. VERSION - Version 0.30 + Version 0.34 SYNOPSIS In a script : @@ -41,10 +41,9 @@ DESCRIPTION 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 - , - 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 @@ -170,16 +169,38 @@ CAVEATS is due to a shortcoming in the way perl handles the hints hash, which is addressed in perl 5.10. + Indirect constructs that appear in code "eval"'d during the global + destruction phase of a spawned thread or pseudo-fork (the processes used + internally for the "fork" emulation on Windows) are not reported. + 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 : + + * : 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. + + * : 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, "", . @@ -208,8 +229,8 @@ ACKNOWLEDGEMENTS 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 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.