NAME
    subs::auto - Read barewords as subroutine names.

VERSION
    Version 0.01

SYNOPSIS
        {
         use subs::auto;
         foo;             # Compile to "foo()"     instead of "'foo'"
                          #                        or croaking on strict subs
         foo $x;          # Compile to "foo($x)"   instead of "$x->foo"
         foo 1;           # Compile to "foo(1)"    instead of croaking
         foo 1, 2;        # Compile to "foo(1, 2)" instead of croaking
         foo(@a);         # Still ok
         foo->meth;       # "'foo'->meth" if you have use'd foo somewhere,
                          #  or "foo()->meth" otherwise
         print foo 'wut'; # print to the filehandle foo if it's actually one,
                          #  or "foo()->print('wut')" otherwise
        } # ... but function calls will fail at run-time if you don't
          # actually define foo somewhere
    
        foo; # BANG

DESCRIPTION
    This pragma lexically enables the parsing of any bareword as a
    subroutine name, except those which corresponds to an entry in %INC
    (expected to be class names) or whose symbol table entry has a IO slot
    (expected to be filehandles).

EXPORT
    None.

CAVEATS
    "*{'::foo'}{CODE}" will appear as defined in a scope where the pragma is
    enabled, "foo" is used as a bareword, but is never actually defined
    afterwards. This may or may not be considered as Doing The Right Thing.
    However, "*{'::foo'}{CODE}" will always return the right value if you
    fetch it outside the pragma's scope. Actually, you can make it return
    the right value even in the pragma's scope by reading "*{'::foo'}{CODE}"
    outside (or by actually defining "foo", which is ultimately why you use
    this pragma, right ?).

DEPENDENCIES
    perl 5.10.0.

    Carp (standard since perl 5), Symbol (since 5.002).

    Variable::Magic with "uvar" magic enabled (this should be assured by the
    required perl version).

AUTHOR
    Vincent Pit, "<perl at profvince.com>", <http://www.profvince.com>.

    You can contact me by mail or on #perl @ FreeNode (vincent or
    Prof_Vince).

BUGS
    Please report any bugs or feature requests to "bug-subs-auto at
    rt.cpan.org", or through the web interface at
    <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=subs-auto>. I will be
    notified, and then you'll automatically be notified of progress on your
    bug as I make changes.

SUPPORT
    You can find documentation for this module with the perldoc command.

        perldoc subs::auto

    Tests code coverage report is available at
    <http://www.profvince.com/perl/cover/subs-auto>.

ACKNOWLEDGEMENTS
    Thanks to Sebastien Aperghis-Tramoni for helping to name this pragma.

COPYRIGHT & LICENSE
    Copyright 2008 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.

