NAME
   Syntax::Keyword::Val - Provides a readonly variant of 'my' called 'val'

WARNING
   While I do have serious intentions for this module in the future, it is
   definitely a *toy* as written now. At this stage, it serves better as a
   simple example of using Keyword::Simple.

DESCRIPTION
   Simply use this module, then place the "val" keyword where you'd
   normally use "my" for a read-only variant.

    use Syntax::Keyword::Val;

    val $foo = "bar";
    $foo = 123;        # ERROR

    val $foo = {a => 123, b => 456};
    $foo->{a}   = 666;       # ERROR
    $foo->{xyz} = "xyzzy";   # ERROR
    del $foo->{b};           # ERROR

   The implementation uses Data::Lock, which itself uses the very fast
   internal SV flag to enforce the read-only status, so there should be no
   runtime penalty for using it.

BUGS
   Bugs and missing features aplenty. To start, due to the hacky
   implementation using Keyword::Simple (which is great, but quite
   limited), the "val" keyword currently only works for standalone
   declarations, i.e. statements that would normally begin with "my".
   Statements like this will not work:

    # Doesn't work, will generate a syntax error
    open val $fh, '<', $filename;

   Only scalars and references can be declared as "val". Attempting to
   declare a list or hash as a val will make it a normal variable (and
   issue a warning)

    # Issues a warning (assuming 'use warnings' is in effect)
    val @foo = qw(foo bar baz);

   Finally, "val" only applies to the first variable in a group, and the
   rest are read-write as normal.

    # Issues a warning (assuming 'use warnings' is in effect)
    val ($foo, $bar) = @baz;

AUTHOR
   Chuck Adams <[email protected]>

COPYRIGHT AND LICENSE
   This software is copyright (c) 2013 by Chuck Adams

   This is free software; you can redistribute it and/or modify it under
   the same terms as the Perl 5 programming language system itself.