我想返回 的正确值$message_all
,但在给定场景中它返回空白。有什么建议么?
processing()
print "message_all = $message_all";
sub processing
{
log ( " Some message");
}
sub log
{
my $text = shift;
my $message_all .= $text;
return "$message_all";
}
我想返回 的正确值$message_all
,但在给定场景中它返回空白。有什么建议么?
processing()
print "message_all = $message_all";
sub processing
{
log ( " Some message");
}
sub log
{
my $text = shift;
my $message_all .= $text;
return "$message_all";
}
当然它是空白的——你已经在函数$message_all
内部声明了log()
,所以它在函数之外不可用。
始终在您的 Perl 代码中执行此操作:
use strict;
use warnings;
它会告诉你这$message_all
是未声明的。
首先,您必须始终 use strict
以及use warnings
在程序开始时,尤其是在您寻求帮助时。
请发布显示您遇到的问题的代码。当您的log
子程序与核心功能发生冲突时,您的程序甚至无法编译,并且无法正常运行。它永远不会显示您描述的问题行为。
您需要从子例程收集返回值才能打印它。可能是这样的
use strict;
use warnings;
my $message = processing();
print "message = $message";
sub processing {
mylog ( " Some message");
}
sub mylog {
my $text = shift;
my $message_all .= $text;
return $message_all;
}