【发布时间】:2017-06-19 18:01:24
【问题描述】:
Perl 菜鸟。
我无法理解从模块中的子例程返回数组值。
脚本有以下内容:
print "Enter your first and last name.\n";
chomp(my $fullname = <STDIN>); #input is 'testing this' all lower case
Jhusbands::Loginpass->check_name($fullname);
print "$fullname\n";
该模块包括以下子程序:
sub check_name {
my $class = shift;
if ($_[0] =~ /^\w+\s+\w+$/ ) {
@_ = split( / /, $_[0]);
foreach $_ (@_) {
$_ = ucfirst lc for @_;
@_ = join(" ", @_);
print Dumper(@_) . "\n";
return @_;
}
}
}
我正在取名字,只检查它的第一个和最后一个(我稍后会谈到 else 语句),拆分它,更正大小写,然后再次加入。 Dumper 将最终数组显示为:
$VAR1 = 'Testing This';
所以它似乎工作得那么远。但是,脚本中 $fullname 的返回值显示全部小写:
为什么不将 Dumper 显示的更正后的大写变量作为最后一次数组迭代?
【问题讨论】:
-
你正在从你的 sub 返回一个但没有将它存储在任何地方。
-
另外,
foreach $_ (@_) { ... }应该只替换为...。 -
你应该使用
@_以外的数组。 -
而
Dumper(@a)应该是Dumper(\@a)。
标签: perl return-value subroutine data-dumper