Perl类命名约定

sha*_*naw 7 perl

假设我创建了一个名为的类Bar.该文件Bar.pm开始

package Bar;
Run Code Online (Sandbox Code Playgroud)

为避免与其他Bar类冲突,我将文件放在子目录中Foo.所以现在,当我使用课程时,我必须写

use Foo::Bar;
Run Code Online (Sandbox Code Playgroud)

我的问题是,我是否需要将类的名称更改为Foo::Bar换句话说,我是否需要改变的第一线Bar.pm,以

package Foo::Bar;
Run Code Online (Sandbox Code Playgroud)

?问题是,如果我这样做,我现在必须将该类称为Foo::Bar无处不在,例如

my $obj = Foo::Bar->new();
Foo::Bar->doClassMethod();
Run Code Online (Sandbox Code Playgroud)

这是恼人的(同样的问题在讨论这个问题),尤其是因为我很喜欢的类方法.

tch*_*ist 9

是的,您必须将其名称更改为与该名称package完全匹配use.

  • @shawkinaw如果你不这样做,那么`use`语句的`import`方法将找不到合适的类,包括构造函数在内的其他类方法将(经常)失败.这就像在'use`语句中弄错了一样.它有点适用于不区分大小写的文件系统,但只是偶然的,并且各种其他东西都被软化了.不要那样做.只需将您的文件,包装和使用完全排列.多年以后你可能有某些理由去做其他事情,但这只会带来严峻的战斗经验.它仍然是可疑的. (9认同)