問題

私は現在の時刻を取得するために以下のステートメントを使用しました。

   print "$query executed successfully at ",localtime;
  print "$query executed successfully at ",(localtime);
  print "$query executed successfully at ".(localtime);
 

出力

  executed successfully at 355516731103960
 executed successfully at 355516731103960
 executed successfully at Wed Apr  7 16:55:35 2010
 

最初の 2 つの文は、現在の時刻を日付形式で表示していません。 3番目のステートメントは、日付形式で正しい出力を与えるだけです。

私の理解は、最初のものがスカラーコンテキストで値を返すので、数値を返しているということです。

次に、2番目のプリントでは、リストコンテキストでのみlocaltimeを使用しました。なぜ数値出力も与えているのですか?

  ベストアンサー

おそらく、Perlでプログラミングするために学ぶことができる最も重要なことはコンテキストです。多くのbuilt-inサブルーチンと演算子は、コンテキストによって異なる動作をします。

 print "$query executed successfully at ", localtime, "
"; # list context
print "$query executed successfully at ",(localtime),"
"; # list context
print "$query executed successfully at ". localtime, "
"; # scalar context
print "$query executed successfully at ".(localtime),"
"; # scalar context

print "$query executed successfully at ", scalar  localtime, "
"; # scalar context
print "$query executed successfully at ", scalar (localtime),"
"; # scalar context
 

これは、ステートメントを分割することで明確にすることができます。

 my $time = localtime; # scalar context
print "$query executed successfully at $time
";

my @time = localtime; # list context
print "$query executed successfully at @time
";
 

  同じタグがついた質問を見る

perlbuilt-in