【发布时间】:2014-12-12 04:15:49
【问题描述】:
我对 perl 很陌生,我似乎找不到任何关于如何知道子例程是否接受参数的信息。
在其他语言中(例如python、java等),很清楚,一个方法/函数通常是这样的:
def my_func(arg1, arg2):
# do something
但在 perl 中,它很简单:
sub my_func {
my params = @_;
# do something
}
但是我看到了一些例子,其中 my params = @_ 甚至不包括在内,但子例程被调用并传递了一个参数。
例如
sub my_func {
my $self = shift;
my $fieldstr = 'tbl'.$self->db_func.'*,';
my $sql = "SELECT $fieldstr FROM tbl".$self->db_func.'WHERE'.$self->...;
my $sth = $self->other_func->my_func($sql) or return undef;
}
所以我想知道是否有某种准则可以知道子例程是否需要参数?
【问题讨论】:
-
shift在 sub 中与shift(@_)相同。 -
通常,任何子或方法的文档都应该指出参数是什么。 (不想刻薄。)
-
你是说你根本不懂 Perl,但需要记录一些 Perl 代码? 没有办法通过阅读和理解代码了解 Perl 子例程在其参数列表中的期望。
标签: perl parameters subroutine