(Perl で) localtime の整数の戻り値を追加しようとしていますが、戻り値を次のようなものに変換することは避けられないようです: Sun Jul 26 16:34:49 2009必要なものはわかりますが、$foo = localtime と言うと、""; $foo; を出力します。文字列を取得します。その数字が欲しい。$foo = localtime() * 1 を試しましたが、それは 1969 年に戻り、文字列を取得します。
非常に紛らわしいです。
Perl は、コンテキストに応じて物事を異なる方法で扱います。スカラー コンテキストでlocaltime
は、現在の (ローカル) 時間を表す文字列を返します。リスト コンテキストでは、時間値を構成するさまざまなフィールドのリストを返します。
この問題は、 の構文が原因で発生しますprint
。
* print FILEHANDLE LIST
* print LIST
* print
print
はリストを想定しているため、これはリストlocaltime
コンテキストに置かれるため、秒、分、時間などを表す数字のリストが返され、print
関数によって連結されます。スカラーに代入する場合localtime
、スカラー コンテキストにあり、文字列を返します。これらの数字を連結したい場合は、次のようにすることができます
my $foo = join '', localtime;
print $foo;
ただし、おそらく適切なエポック時間の値は、何をしていてもより便利です。その場合、time
代わりに使用できます。
関数が何をするかを知っていると思うが、それがそうではない場合はいつでも、ドキュメントをチェックしてください。値がどの順序で表示されるか思い出せないので、ローカルタイムのドキュメントを頻繁にチェックします。