Filewatcher File Search File Search
Content Search
» » » » » selfvars-0.22.tar.gz » Content »
pkg://selfvars-0.22.tar.gz:37509/selfvars-0.22/  info  downloads


    selfvars - Provide $self, @args, %opts and %hopts variables for OO

        package MyClass;

        ### Import $self, @args, %opts and %hopts into your package:
        use selfvars;

        ### Or name the variables explicitly:
        # use selfvars -self => 'self', -args => 'args', -opts => 'opts', -hopts => 'hopts';

        ### Write the constructor as usual:
        sub new {
            return bless({}, shift);

        ### Use $self in place of $_[0]:
        sub foo {

        ### Use @args in place of @_[1..$#_]:
        sub bar {
            my ($foo, $bar) = @args;
            $self->{foo} = $foo;
            $self->{bar} = $bar;

        ### Use %opts in place of %{$_[1]}:
        sub baz {
            $self->{x} = $opts{x};
            $self->{y} = $opts{y};
        ### Use %hopts with $obj->yada( x => 1, y => 2 ) call syntax
        sub yada {
            $self->{x} = $hopts{x}
            $self->{y} = $hopts{y}

    This moudles exports four special variables: $self, @args, %opts and

    They are really just handy helpers to get rid of:

        my $self = shift;

    Behind the scenes, $self is simply tied to $_[0], @args to @_[1..$#_],
    %opts to "%{$_[1]}", and "%hopts%" to "%{{@_[1..$#_]}}".

    Currently, $self, @args and %hopts are read-only; this means you cannot
    mutate them:

        $self = 'foo';              # error
        my $foo = shift @args;      # error
        $hopts{x} = 'y';            # error
        delete $hopts{x};           # error

    This restriction may be lifted at a later version of this module, or
    turned into a configurable option instead.

    However, %opts is not read-only, and can be mutated freely:

        $opts{x} = 'y';             # okay
        delete $opts{x};            # also okay

        Returns the current object.

        Returns the argument list.

        Returns the first argument, which must be a hash reference, as a

        Returns the arguments list as a hash.

  Choosing non-default names
    You can choose alternative variable names with explicit import

        # Use $this and @vars instead of $self and @args, leaving %opts and %hopts alone:
        use selfvars -self => 'this', -args => 'vars', -opts, -hopts;

        # Use $this but leave @args, %opts and %hopts alone:
        use selfvars -self => 'this', -args, -opts, -hopts;

        # Use @vars but leave $self, %opts and %hopts alone:
        use selfvars -args => 'vars', -self, -opts, -hopts;

    You may also omit one or more variable names from the explicit import

        # Import $self but not @args, %opts nor %hopts:
        use selfvars -self => 'self';

        # Same as the above:
        use selfvars -self;

        # Import $self and %opts but not @args nor %hopts:
        use selfvars -self, -opts;


    This module was inspired and based on Kang-min Liu (gugod)'s "".

    As seen on #perl:

        <gugod> audreyt: looks exactly like what I want to be in the beginning
        <gugod> audreyt: but I can't sort out the last BEGIN{} block like you did.
        <gugod> audreyt: that's a great job :D


    唐鳳 <>

CC0 1.0 Universal
    To the extent possible under law, 唐鳳 has waived all copyright and
    related or neighboring rights to selfvars.

    This work is published from Taiwan.


Results 1 - 1 of 1
Help - FTP Sites List - Software Dir.
Search over 15 billion files
© 1997-2017