たとえば、その日付を変換したい:
02082012
In that case:
02 - Day
08 - Month
2012 - Year
今のところ、日付を分離していますが、月に変換することはできません:
#echo "02082012"|gawk -F "" '{print $1$2 "-" $3$4 "-" $5$6$7$8}'
#02-08-2012
変換後、すべての月をキャッチするために期待されるビュー:
02-Aug-2012
Time::Pieceは Perl のコア モジュールであり、このような単純な操作に最適です。
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Time::Piece;
my $string = '02082012';
my $date = Time::Piece->strptime($string, '%d%m%Y');
say $date->strftime('%d-%b-%Y');
(はい、これは user1811486 の回答と非常によく似ていますが、元の質問で要求された正しい形式を使用しています。)
固定フィールド長の文字列を分割するには、次を使用しますunpack
。
my $input = "02082012";
my ( $day, $month, $year ) = unpack( 'a2 a2 a4', $input );
print "$input becomes $day, $month, $year\n";
http://perldoc.perl.org/functions/unpack.htmlを参照してください
次に、他の回答で述べたようにPOSIX::strftime()
、日付を再フォーマットするために使用します。