我想返回$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";
}
答案 0 :(得分:7)
当然它是空白的 - 你在$message_all
函数中声明了log()
,所以它在它之外是不可用的。
始终在您的Perl代码中执行此操作:
use strict;
use warnings;
它会告诉你$message_all
未声明。
答案 1 :(得分:3)
首先,您必须在程序开始时始终 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;
}