【发布时间】:2014-10-22 05:54:32
【问题描述】:
我想按字母顺序对我的模块子例程进行排序(我有很多子例程,如果子例程在文件中排序,我认为编辑文件会更容易)。例如给定A.pm:
package A;
use warnings;
use strict;
sub subA {
print "A\n";
}
sub subC {
print "C\n";
}
sub subB {
print "B\n";
}
1;
我想运行一个sortSub A.pm 给:
package A;
use warnings;
use strict;
sub subA {
print "A\n";
}
sub subB {
print "B\n";
}
sub subC {
print "C\n";
}
1;
是否有任何 CPAN 资源可以帮助完成这项任务?
【问题讨论】:
-
如果您的某些子程序调用其他子程序,那么在某些情况下(如果您使用原型,或调用不带括号的子程序),定义它们的顺序可能会影响如何他们被解释了。
-
@tobyink 感谢您的评论。我没有使用任何原型。为什么在没有括号的情况下调用 subs 是一个问题?你能举个例子吗?
-
@HåkonHægland 如果预先声明或导入了子例程,则括号是可选的。
perl -wE 'sub foo { say "foo"; } foo'有效,perl -wE 'foo; sub foo { say "foo"; }'无效。 -
my $foo = bar baz();可以解释为my $foo = bar(baz());或my $foo = "baz"->bar();(即间接对象语法),这取决于是否已经看到名为bar的子。
标签: perl