FalseVinylShrub has asked for the wisdom of the Perl Monks concerning the following question:

Hi

In some code I've been asked to maintain, a movable type plugin, I came across this code:

my TheSchwartz::Job $job = shift;

Googling finds that this exact snippet of code occurs in TheSchwartz documentation and has been copied into many other pages. However, not knowing what this construct is called, I've not been able to find any documentation that explains what, if anything, this does.

Does anyone know what this is called, what it means, any reasons to use or not use it?

Many thanks

FalseVinylShrub

Disclaimer: Please review and test code, and use at your own risk... If I answer a question, I would like to hear if and how you solved your problem.

Replies are listed 'Best First'.
Re: Specifying the class of an object in the declaration
by Anonyrnous Monk (Hermit) on Jan 13, 2011 at 13:07 UTC

    It associates a "type" with the variable — e.g. for use with fields:

    package Foo; use fields qw(foo bar); package main; my Foo $foo = {}; $foo->{baz} = 42;
    $ ./882116.pl No such class field "baz" in variable $foo of type Foo at ./882116.pl +line 8.

      Hi

      Thanks. That explains what it does.

Re: Specifying the class of an object in the declaration
by ELISHEVA (Prior) on Jan 13, 2011 at 12:45 UTC

    You can find out the gory details on CPAN at TheSchwartz::Job and TheSchwartz. In general, if you see something that looks like a package name and you aren't sure what it does , CPAN is a good place to start searching.

    As for the merits of this particular job queue/management package, I'll pass and let some of our job and threading experts handle that.

      Hi

      Thanks for the rapid reply.

      It's not so much TheSchwartz that I'm confused about, though I've never used it before, but rather that particular construct: my CLASSNAME $variable = something. I've never seen it before, and nor have my cow-orkers.

      It's not particularly stopping me from doing anything, I just don't like not understanding something ;-)

      FalseVinylShrub

      Disclaimer: Please review and test code, and use at your own risk... If I answer a question, I would like to hear if and how you solved your problem.

        Ah. Well, according to the documentation of my:

        my TYPE expression

        The exact semantics and interface of TYPE and ATTRS are still evolving. TYPE is currently bound to the use of fields pragma, and attributes are handled using the attributes pragma, or starting from Perl 5.8.0 also via the Attribute::Handlers module. See Private Variables via my() in perlsub for details, and fields, attributes, and Attribute::Handlers.