Provided by: libreadonly-tiny-perl_4-3_all bug

NAME

       Readonly::Tiny - Simple, correct readonly values

SYNOPSIS

           use Readonly::Tiny;

           my $x = readonly [1, 2, 3];
           # $x is not readonly, but the array it points to is.

           my @y = (4, 5, 6);
           readonly \@y;
           # @y is readonly, as well as its contents.

DESCRIPTION

       Readonly::Tiny provides a simple and correct way of making values readonly. Unlike Readonly it does not
       cause arrays and hashes to be tied, it just uses the core "SvREADONLY" flag.

FUNCTIONS

   readonly
           my $ro = readonly $ref, \%opts;

       Make a data structure readonly. $ref must be a reference; the referenced value, and any values referenced
       recursively, will be made readonly. $ref is returned, but it will not itself be readonly; it is possible
       to make a variable readonly by passing a reference to it, as in the "SYNOPSIS".

       %opts is a hashref of options:

       peek
           Normally blessed references will not be looked through. The scalar holding the reference will be made
           readonly  (so  a  different  object cannot be assigned) but the contents of the object itself will be
           left alone. Supplying "peek => 1" allows blessed refs to be looked through.

       skip
           This should be a hashref keyed by refaddr. Any object whose refaddr is in the hash will be skipped.

       Note that making a hash readonly has the same effect as calling "Hash::Util::lock_hash";  in  particular,
       it causes restricted hashes to be re-restricted to their current set of keys.

   readwrite
           my $rw = readwrite $ref, \%opts;

       Undo  the  effects  of  "readonly".  %opts  is  the same. Note that making a hash readwrite will undo any
       restrictions put in place using Hash::Util.

       BE VERY CAREFUL calling this on values you have not made  readonly  yourself.  It  will  silently  ignore
       attempts  to make the core values "PL_sv_undef", "PL_sv_yes" and "PL_sv_no" readwrite, but there are many
       other values the core makes readonly, usually with good reason.  Recent versions of perl will  not  allow
       you to make readwrite a value the core has set readonly, but you should probably not rely on this.

   Readonly
           Readonly my $x, 1;
           Readonly my @y, 2, 3, 4;
           Readonly my %z, foo => 5;

       This  is  a  compatibility shim for Readonly. It is prototyped to take a reference to its first argument,
       and assigns the rest of the argument list to that argument before making the whole thing readonly.

EXPORTS

       "readonly" is exported by default. "readwrite" and "Readonly" are exported on request.

SEE ALSO

       Readonly was the first module to supply readonly values. It was written for Perl 5.6, and as a result the
       interface and implementation are both rather clunky. With Readonly::XS the performance  is  improved  for
       scalar varuables, but arrays and hashes still use a tied implementation which is very slow.

       Const::Fast is a greatly improved reaoonly module which uses perl's internal "SvREADONLY" flag instead of
       ties. The differences between this module and Const::Fast are:

       •   The  "readonly"  function  does  not  insist  on performing an assignment, it just returns a readonly
           value. This is, IMHO, more useful, since it means a readonly value can be returned from  a  function.
           In particular, it is often useful to return a readonly value from a builder method.

       •   It  does not attempt to clone deep structures. If "Clone::Fast" is applied to a structure with cross-
           links it will clone the whole thing, on the principle that parts of the  graph  may  be  shared  with
           something  else  which  should  not be readonly. This module takes the approach that if you asked for
           something to be made readonly you meant it, and if it points to something it  shouldn't  that's  your
           mistake.

BUGS

       Please report bugs to <bug-Readonly-Tiny@rt.cpan.org>.

AUTHOR

       Ben Morrow <ben@morrow.me.uk>

COPYRIGHT

       Copyright 2015 Ben Morrow.

       Released under the 2-clause BSD licence.

perl v5.36.0                                       2022-10-13                                Readonly::Tiny(3pm)