の適切な値を返したいのですが$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;
}