File Coverage

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