https://rt.cpan.org/Ticket/Display.html?id=69234
is it package foo { ... 1; } or package foo { ... }; 1; ? or what?
and is it possible this could get clarified in the next edition of the
docs?
--
Caleb Cushing
My take on this is that
package Foo {
}
is the same thing as
{
package Foo;
}
Therefore, if your style allowed
{
package Foo;
1;
}
then it should allow
package Foo {
1;
}
However, I think you can make a good argument for not allowing that.
A module is not a package. The fact that it is customary for modules
to consist of one package sometimes confuses this, but there is no
requirement that a module include a package at all. From that basis,
I would argue that
package Foo {
}
1;
is more correct.
--
Chas. Owens
wonkden.net
The most important skill a programmer can have is the ability to read.
I have just reread perlmod and perlmodlib. It looks like they both
need a decent amount of work to bring them in line with the new
package syntax. For instance,
Give the module a version/issue/release number.
To be fully compatible with the Exporter and MakeMaker modules
you should store your module’s version number in a non‐my
package variable called $VERSION. This should be a floating
point number with at least two digits after the decimal (i.e.,
hundredths, e.g, "$VERSION = "0.01""). Don’t use a "1.3.2"
style version. See Exporter for details.
Should probably be changed to refer to the second package argument
with a caveat about possibly needing $VERSION to satisfy old static
analysis code.
In article <BANLkTikBYCOVX60JyEJNh27ETNYODUXT=w...@mail.gmail.com>, Caleb
Cushing <xenote...@gmail.com> wrote:
> Having a little debate over this on a Perl::Critic ticket. I'm not
> sure anyone is sure and the docs don't say.
>
> https://rt.cpan.org/Ticket/Display.html?id=69234
>
>
> is it package foo { ... 1; } or package foo { ... }; 1; ? or what?
> and is it possible this could get clarified in the next edition of the
> docs?
You don't need to return true from a package. You need to return true
from a use-d or require-d file so that the last statement in the file
returns true and perl knows it successfully loaded the file. It's
nothing to do with packages. You still need that true value even if you
have no packages declared in that file.
probably not, but I thought that this was the package that needed to
be returned true from and not the file. Now I understand. Thanks.