-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 に答える