データ文字列で strftime を使用しようとしています:
my $date = '2013-10-31 13:55';
my $new_date = $date->strftime('%Y-%m-%d %H:%M:%S');
しかし、私はいつもエラーが発生します
"Can't call method "strftime" without a package or object reference"
これについて私ができることを提案してください
日付をあるフォーマットから別のフォーマットに変換するには、通常、元の表現をその部分に解析してから、それらを目的の表現にフォーマットします。ただし、この場合に欠けているのは秒だけなので、必要なのは次のとおりです。
my $new_date = $date . ':00';
あなたの例で$date
は、オブジェクトではなくスカラーです。メソッドがありませんstrftime
(したがって、パッケージまたはオブジェクトの参照がないというエラーが表示されます)。池上が言ったように、文字列に秒を追加するだけの場合は、.
演算子を追加してください。ナッツを割るのにハンマーを使わないでください。
フォーマットにそれほど重要でないことをしている場合は、 DateTimeとDateTime::Format::Strptimeを使用して次のようなことを行うことができます。
use DateTime;
use DateTime::Format::Strptime;
my $date = '2013-10-31 13:55';
my $parser = DateTime::Format::Strptime->new(pattern => '%Y-%m-%d %H:%M');
# Parse string into a DateTime object
my $dt = $parser->parse_datetime($date);
# Print DateTime object with a custom format
print $dt->strftime('%a, %d %b %Y %H:%M:%S %z');
# Thu, 31 Oct 2013 13:55:00 +0000