| blib/lib/to_char.pl | |||
|---|---|---|---|
| Criterion | Covered | Total | % | 
| statement | 37 | 108 | 34.2 | 
| branch | 8 | 52 | 15.3 | 
| condition | 1 | 5 | 20.0 | 
| subroutine | 7 | 24 | 29.1 | 
| pod | 1 | 24 | 4.1 | 
| total | 54 | 213 | 25.3 | 
| line | stmt | bran | cond | sub | pod | time | code | 
|---|---|---|---|---|---|---|---|
| 1 | my @timevals; | ||||||
| 2 | |||||||
| 3 | return &to_char(@_) if (scalar(@_)); #ADDED 2003/12/15 TO MAKE INTO A GENERAL CALLABLE FUNCTION! | ||||||
| 4 | |||||||
| 5 | my ($s) = $_[0]; | ||||||
| 6 | my ($fmt) = $_[1] || 'dd-MON-rr'; | ||||||
| 7 | |||||||
| 8 | $err = ''; | ||||||
| 9 | $rtnTime = ''; | ||||||
| 10 | |||||||
| 11 | @timevals = localtime($s); | ||||||
| 12 | |||||||
| 13 | foreach my $f (qw(month mon Month Mon MONTH MON)) | ||||||
| 14 | { | ||||||
| 15 | $fmt =~ s/($f)/&{$f}($1)/eg; | ||||||
| 16 | last if ($err) ; | ||||||
| 17 | } | ||||||
| 18 | foreach my $f (qw(ddd dd yyyy yy hh24 hh mi mm sssss ss rm rr)) | ||||||
| 19 | { | ||||||
| 20 | $fmt =~ s/($f)/&{$f}($1)/egi; | ||||||
| 21 | last if ($err) ; | ||||||
| 22 | } | ||||||
| 23 | |||||||
| 24 | #$fmt =~ s/\b(a)([\.m]?)\b/&a($1).$2/egi; | ||||||
| 25 | $fmt =~ s/\b([aApP])([\.[mM]?)\b/&{$1}.$2/eg; | ||||||
| 26 | |||||||
| 27 | $fmt =~ s/([0\$BSCL]*)([9D\.\,GV]+)(\s*CR|PR|EEEE)/&fmt9($1,$2,$3)/eg; | ||||||
| 28 | |||||||
| 29 | $rtnTime = $fmt; | ||||||
| 30 | |||||||
| 31 | |||||||
| 32 | sub fmt9 | ||||||
| 33 | { | ||||||
| 34 | 0 | 0 | 0 | 0 | my ($pre, $val, $suf) = (@_); | ||
| 35 | 0 | 0 | my $l = length($val) + 1; | ||||
| 36 | 0 | 0 | my $dec; | ||||
| 37 | 0 | 0 | 0 | $dec = length($1) if ($val =~ /[\.DV](\d+)/i); | |||
| 38 | 0 | 0 | my $fmtstr = '%'; | ||||
| 39 | 0 | 0 | $fmtstr .= $l; | ||||
| 40 | 0 | 0 | 0 | $fmtstr .= '.'.$dec if ($dec); | |||
| 41 | 0 | 0 | 0 | if ($suf =~ /(E)EEE/i) | |||
| 42 | { | ||||||
| 43 | 0 | 0 | $fmtstr .= $1; | ||||
| 44 | } | ||||||
| 45 | else | ||||||
| 46 | { | ||||||
| 47 | 0 | 0 | $fmtstr .= 'f'; | ||||
| 48 | } | ||||||
| 49 | 0 | 0 | my $t = sprintf($fmtstr, $s); | ||||
| 50 | 0 | 0 | 0 | $t =~ s/\s(\S)/\$$1/ if ($pre =~ /[C\$]/i); | |||
| 51 | 0 | 0 | 0 | $t =~ s/(\s)([^\s\-])/$1\+$2/ if ($pre =~ /S/i); | |||
| 52 | 0 | 0 | 0 | 0 | $t =~ s/[0\.\,]/ /g if ($pre =~ /B/i && $t =~ /^[\s0\.\+\-\,]+$/); | ||
| 53 | 0 | 0 | 0 | $t =~ s/([\d\.\+\-]+)/ | |||
| 54 | 0 | 0 | my ($one) = $1; | ||||
| 55 | 0 | 0 | $one *= 10 ** $dec; | ||||
| 56 | 0 | 0 | $one; | ||||
| 57 | /e if ($val =~ /V/i); | ||||||
| 58 | 0 | 0 | 0 | if ($suf =~ /(\s*cr)/i) | |||
| 0 | |||||||
| 59 | { | ||||||
| 60 | 0 | 0 | my ($one) = $1; | ||||
| 61 | 0 | 0 | $t =~ s/\-(\S+)/$1$one/; | ||||
| 62 | } | ||||||
| 63 | elsif ($suf =~ /pr/i) | ||||||
| 64 | { | ||||||
| 65 | 0 | 0 | $t =~ s/(\-)(\S+)(\s?)/\<$2\>/; | ||||
| 66 | 0 | 0 | $t =~ s/\$\\<\$/; | ||||
| 67 | } | ||||||
| 68 | 0 | 0 | return $t; | ||||
| 69 | } | ||||||
| 70 | |||||||
| 71 | sub month | ||||||
| 72 | { | ||||||
| 73 | 0 | 0 | 0 | 0 | my @months = ( | ||
| 74 | 'january ', 'february ', 'march ', 'april ', | ||||||
| 75 | 'may ', 'june ', 'july ', 'august ', | ||||||
| 76 | 'september', 'october ', 'november ', 'december '); | ||||||
| 77 | |||||||
| 78 | 0 | 0 | return $months[$timevals[4]]; | ||||
| 79 | } | ||||||
| 80 | |||||||
| 81 | sub Month | ||||||
| 82 | { | ||||||
| 83 | 0 | 0 | 0 | 0 | my @months = ( | ||
| 84 | 'January ', 'February ', 'March ', 'April ', | ||||||
| 85 | 'May ', 'June ', 'July ', 'August ', | ||||||
| 86 | 'September', 'October ', 'November ', 'December '); | ||||||
| 87 | |||||||
| 88 | 0 | 0 | my $indx = shift; | ||||
| 89 | 0 | 0 | return $months[$timevals[4]]; | ||||
| 90 | } | ||||||
| 91 | |||||||
| 92 | sub MONTH | ||||||
| 93 | { | ||||||
| 94 | 0 | 0 | 0 | 0 | my @months = ( | ||
| 95 | 'JANUARY ', 'FEBRUARY ', 'MARCH ', 'APRIL ', | ||||||
| 96 | 'MAY ', 'JUNE ', 'JULY ', 'AUGUST ', | ||||||
| 97 | 'SEPTEMBER', 'OCTOBER ', 'NOVEMBER ', 'DECEMBER '); | ||||||
| 98 | |||||||
| 99 | 0 | 0 | my $indx = shift; | ||||
| 100 | 0 | 0 | return $months[$timevals[4]]; | ||||
| 101 | } | ||||||
| 102 | |||||||
| 103 | sub mon | ||||||
| 104 | { | ||||||
| 105 | 0 | 0 | 0 | 0 | my @months = ('jan', 'feb', 'mar', 'apr', 'may', 'jun', | ||
| 106 | 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'); | ||||||
| 107 | |||||||
| 108 | 0 | 0 | my $indx = shift; | ||||
| 109 | 0 | 0 | return $months[$timevals[4]]; | ||||
| 110 | } | ||||||
| 111 | |||||||
| 112 | sub Mon | ||||||
| 113 | { | ||||||
| 114 | 1 | 1 | 0 | 4 | my @months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', | ||
| 115 | 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); | ||||||
| 116 | |||||||
| 117 | 1 | 4 | my $indx = shift; | ||||
| 118 | 1 | 5 | return $months[$timevals[4]]; | ||||
| 119 | } | ||||||
| 120 | |||||||
| 121 | sub MON | ||||||
| 122 | { | ||||||
| 123 | 0 | 0 | 0 | 0 | my @months = ('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', | ||
| 124 | 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'); | ||||||
| 125 | |||||||
| 126 | 0 | 0 | my $indx = shift; | ||||
| 127 | 0 | 0 | return $months[$timevals[4]]; | ||||
| 128 | } | ||||||
| 129 | |||||||
| 130 | sub rm | ||||||
| 131 | { | ||||||
| 132 | 0 | 0 | 0 | 0 | my @months = ('i', 'ii', 'iii', 'iv', 'v', 'vi', | ||
| 133 | 'vii', 'viii', 'ix', 'x', 'xi', 'xii'); | ||||||
| 134 | |||||||
| 135 | 0 | 0 | my $indx = shift; | ||||
| 136 | 0 | 0 | return $months[$timevals[4]]; | ||||
| 137 | } | ||||||
| 138 | |||||||
| 139 | sub mm | ||||||
| 140 | { | ||||||
| 141 | 1 | 1 | 0 | 2 | my ($t) = $timevals[4] + 1; | ||
| 142 | 1 | 50 | 4 | $t = '0' . $t if ($t < 10); | |||
| 143 | 1 | 4 | return $t; | ||||
| 144 | } | ||||||
| 145 | |||||||
| 146 | sub yyyy | ||||||
| 147 | { | ||||||
| 148 | 1 | 1 | 0 | 5 | return $timevals[5] + 1900; | ||
| 149 | } | ||||||
| 150 | |||||||
| 151 | sub yy | ||||||
| 152 | { | ||||||
| 153 | 0 | 0 | 0 | 0 | return &rr; | ||
| 154 | } | ||||||
| 155 | |||||||
| 156 | sub rr | ||||||
| 157 | { | ||||||
| 158 | 0 | 0 | 0 | 0 | my ($t) = $timevals[5]; | ||
| 159 | 0 | 0 | 0 | $t -= 100 if ($t >= 100); | |||
| 160 | 0 | 0 | 0 | $t = '0' . $t if ($t < 10); | |||
| 161 | 0 | 0 | return $t; | ||||
| 162 | } | ||||||
| 163 | |||||||
| 164 | #sub ddd | ||||||
| 165 | #{ | ||||||
| 166 | # return $mday; | ||||||
| 167 | #} | ||||||
| 168 | |||||||
| 169 | sub dd | ||||||
| 170 | { | ||||||
| 171 | 1 | 1 | 0 | 3 | my ($t) = $timevals[3]; | ||
| 172 | 1 | 50 | 4 | $t = '0' . $t if ($t < 10); | |||
| 173 | 1 | 4 | return $t; | ||||
| 174 | } | ||||||
| 175 | |||||||
| 176 | sub hh24 | ||||||
| 177 | { | ||||||
| 178 | 0 | 0 | 0 | 0 | my ($t) = $timevals[2]; | ||
| 179 | 0 | 0 | 0 | $t = '0' . $t if ($t < 10); | |||
| 180 | 0 | 0 | return $t; | ||||
| 181 | } | ||||||
| 182 | |||||||
| 183 | sub hh | ||||||
| 184 | { | ||||||
| 185 | 1 | 1 | 0 | 2 | my ($t) = $timevals[2]; | ||
| 186 | 1 | 50 | 3 | $t -= 12 if ($t >= 13); | |||
| 187 | 1 | 50 | 3 | $t += 12 unless ($t); | |||
| 188 | 1 | 50 | 3 | $t = '0' . $t if ($t < 10); | |||
| 189 | 1 | 13 | return $t; | ||||
| 190 | } | ||||||
| 191 | |||||||
| 192 | sub a | ||||||
| 193 | { | ||||||
| 194 | 0 | 0 | 1 | 0 | my ($t) = $timevals[2]; | ||
| 195 | 0 | 0 | 0 | return 'a' if ($t < 12); | |||
| 196 | 0 | 0 | return 'p'; | ||||
| 197 | } | ||||||
| 198 | |||||||
| 199 | sub p | ||||||
| 200 | { | ||||||
| 201 | 0 | 0 | 0 | 0 | my ($t) = $timevals[2]; | ||
| 202 | 0 | 0 | 0 | return 'a' if ($t < 12); | |||
| 203 | 0 | 0 | return 'p'; | ||||
| 204 | } | ||||||
| 205 | |||||||
| 206 | sub A | ||||||
| 207 | { | ||||||
| 208 | 0 | 0 | 0 | 0 | my ($t) = $timevals[2]; | ||
| 209 | 0 | 0 | 0 | return 'A' if ($t < 12); | |||
| 210 | 0 | 0 | return 'P'; | ||||
| 211 | } | ||||||
| 212 | |||||||
| 213 | sub P | ||||||
| 214 | { | ||||||
| 215 | 0 | 0 | 0 | 0 | my ($t) = $timevals[2]; | ||
| 216 | 0 | 0 | 0 | return 'A' if ($t < 12); | |||
| 217 | 0 | 0 | return 'P'; | ||||
| 218 | } | ||||||
| 219 | |||||||
| 220 | sub mi | ||||||
| 221 | { | ||||||
| 222 | 0 | 0 | 0 | 0 | my ($t) = $timevals[1]; | ||
| 223 | 0 | 0 | 0 | $t = '0' . $t if ($t < 10); | |||
| 224 | 0 | 0 | return $t; | ||||
| 225 | } | ||||||
| 226 | |||||||
| 227 | sub sssss | ||||||
| 228 | { | ||||||
| 229 | 0 | 0 | 0 | 0 | return (($timevals[2]*3600) + ($timevals[1]*60) + $timevals[0]); | ||
| 230 | } | ||||||
| 231 | |||||||
| 232 | sub ss | ||||||
| 233 | { | ||||||
| 234 | 1 | 1 | 0 | 2 | my ($t) = $timevals[0]; | ||
| 235 | 1 | 50 | 3 | $t = '0' . $t if ($t < 10); | |||
| 236 | 1 | 3 | return $t; | ||||
| 237 | } | ||||||
| 238 | |||||||
| 239 | sub ddd | ||||||
| 240 | { | ||||||
| 241 | 0 | 0 | 0 | 0 | my ($t) = $timevals[7] + 1; | ||
| 242 | 0 | 0 | 0 | $t = '0' . $t if ($t < 10); | |||
| 243 | 0 | 0 | return $t; | ||||
| 244 | } | ||||||
| 245 | |||||||
| 246 | sub to_char | ||||||
| 247 | { | ||||||
| 248 | 1 | 1 | 0 | 3 | my ($s) = $_[0]; | ||
| 249 | 1 | 50 | 4 | my ($fmt) = $_[1] || 'dd-MON-rr'; | |||
| 250 |  #print " TO_CHAR($s|$fmt)=\n";  | 
||||||
| 251 | 1 | 2 | $err = ''; | ||||
| 252 | 1 | 2 | $rtnTime = ''; | ||||
| 253 | |||||||
| 254 | 1 | 42 | @timevals = localtime($s); | ||||
| 255 |  #print " timevals=".join('|',@timevals)."=\n";  | 
||||||
| 256 | 1 | 4 | foreach my $f (qw(month mon Month Mon MONTH MON)) | ||||
| 257 | { | ||||||
| 258 | 6 | 53 | $fmt =~ s/($f)/&{$f}($1)/eg; | ||||
| 1 | 3 | ||||||
| 1 | 4 | ||||||
| 259 | 6 | 50 | 18 | last if ($err) ; | |||
| 260 | } | ||||||
| 261 | 1 | 2 | foreach my $f (qw(ddd dd yyyy yy hh24 hh mi mm sssss ss rm rr)) | ||||
| 262 | { | ||||||
| 263 | 12 | 77 | $fmt =~ s/($f)/&{$f}($1)/egi; | ||||
| 5 | 9 | ||||||
| 5 | 15 | ||||||
| 264 | 12 | 50 | 39 | last if ($err) ; | |||
| 265 | } | ||||||
| 266 | |||||||
| 267 | #$fmt =~ s/\b(a)([\.m]?)\b/&a($1).$2/egi; | ||||||
| 268 | 1 | 5 | $fmt =~ s/\b([aApP])([\.[mM]?)\b/&{$1}.$2/eg; | ||||
| 0 | 0 | ||||||
| 0 | 0 | ||||||
| 269 | |||||||
| 270 | 1 | 9 | $fmt =~ s/([0\$BSCL]*)([9D\.\,GV]+)(\s*CR|PR|EEEE)/&fmt9($1,$2,$3)/eg; | ||||
| 0 | 0 | ||||||
| 271 | |||||||
| 272 | 1 | 2 | $rtnTime = $fmt; | ||||
| 273 |  #print " tochar returns =$rtnTime=\n";  | 
||||||
| 274 | 1 | 35 | return $rtnTime; | ||||
| 275 | } | ||||||
| 276 | |||||||
| 277 | 1 |