On Fri, Apr 02, 2004 at 04:44:48PM -0800, Charlotte Hee wrote: > > > In my perl script I use the unix command 'date' to make a time stamp > because eventually I want the date format to be DD-MON-YYYY, where DD is > the number of the day (1-31), MON is the 3-char spelling of month (i.e. > JAN), and YYYY is the 4-digit year. In this perl script I'm just testing > for the date so the day and year aren't in this script. > The date command returns the month as a two digit number which I pass to > my routine. My routine then changes the two digit number into the > corresponding 3-char letters for that month. I get an error message like > > Illegal octal digit '8' > Illegal octal digit '9' > > when my routine uses the number 08 and 09. I don't understand what > this error means. If I change my routine to use 8 and 9 I don't see this > error message. The number for April is 04 and that doesn't seem to cause a > problem. What is special about numbers 08 and 09?
Numbers starting with a zero are interpreted as octal numbers. The digits 8 and 9 are illegal in octal numbers. perldoc perldata > Here is the code: ( thanks, Chee ) > > > #!/usr/local/bin/perl -w > # > > use strict; > use vars qw($mm $mon); > > $mm = `date +%m`; > $mon = &convertMO($mm); > > print "month is $mon\n"; > > exit; > > sub convertMO { > my ($tmp) = @_; > my $xmon; > > if ( $tmp == 01 ){ $xmon = 'JAN'; } > if ( $tmp == 02 ){ $xmon = 'FEB'; } > if ( $tmp == 03 ){ $xmon = 'MAR'; } > if ( $tmp == 04 ){ $xmon = 'APR'; } > if ( $tmp == 05 ){ $xmon = 'MAY'; } > if ( $tmp == 06 ){ $xmon = 'JUN'; } > if ( $tmp == 07 ){ $xmon = 'JUL'; } > if ( $tmp == 08 ){ $xmon = 'AUG'; } #<-- illegal error > if ( $tmp == 09 ){ $xmon = 'SEP'; } #<-- illegal error > if ( $tmp == 10 ){ $xmon = 'OCT'; } > if ( $tmp == 11 ){ $xmon = 'NOV'; } > if ( $tmp == 12 ){ $xmon = 'DEC'; } > > return $xmon; > } Here is code which does the same in a slightly more perlish manner: #!/usr/bin/perl use warnings; use strict; { my @months = qw( JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ); sub month_to_string { $months[shift] } } my $month_numeric = (localtime)[4]; my $month_string = month_to_string $month_numeric; print "month is $month_string\n"; -- Paul Johnson - [EMAIL PROTECTED] http://www.pjcj.net -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>