-4

我想返回 的正确值$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";
}
4

2 回答 2

7

当然它是空白的——你已经在函数$message_all内部声明了log(),所以它在函数之外不可用。

始终在您的 Perl 代码中执行此操作:

use strict;
use warnings;

它会告诉你这$message_all是未声明的。

于 2012-07-16T12:36:46.693 回答
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;
}
于 2012-07-16T14:03:10.727 回答