【发布时间】:2015-04-22 11:14:36
【问题描述】:
所以我想知道 Perl 类方法和标准模块中的普通子例程在使用上是否有任何区别。有没有时间你会使用一个而不是另一个?对于这个例子,我假设两个模块中都没有对象方法。
这里是快速的小主课:
#!/usr/local/bin/perl
use strict;
use warnings;
use Foo;
use Bar;
my $arg1 = "blah";
my ($str1, $str2);
$str1 = Foo::subroutine($arg1);
$str2 = Bar->subroutine($arg1);
exit(0);
Package Foo 将保存我的普通子例程调用
use strict;
use warnings;
package Foo;
sub subroutine {
my $arg = shift;
my $string = "Ordinary subroutine arg is $arg\n";
return $string;
}
1;
Package Bar 会保存我的类方法调用
use strict;
use warnings;
package Bar;
sub subroutine {
my $class = shift;
my $arg = shift;
my $string = "Class method arg is $arg\n";
return $string;
}
1;
通常,如果我正在编写 Perl 代码,我只会使用类方法选项(就像 Bar 示例一样),但在阅读了一些前同事的代码后,我开始思考这个问题,这些代码使用了 Foo 中的语法例子。两者似乎天生就在做同样的事情,但似乎不止是表面上的。
【问题讨论】:
-
Always
use strict和use warnings在您编写的每个 Perl 程序的开头,无论如何琐碎的。在没有strict的情况下使用my几乎没有意义。 -
相信我,我相信。我只是没有为这个示例编写它们,因为它不是问题核心的一部分。
-
但是你包括了 shebang 行,到目前为止它不太相关!请始终根据最佳实践编写您的示例:您会受到更少的批评,更多阅读您的问题的人会相信这是一个好主意。
-
触摸。这是我的第一篇文章,所以我真的不知道会发生什么。编辑代码以反映这一点。
-
很公平。请记住,Stack Overflow 不是一个论坛,而是一个旨在为大多数编程问题提供解决方案的资源——更像是由个人问题引发的维基百科。
标签: perl