On Thu, Jan 31, 2002 at 05:41:15PM -0800, Pradeep Sethi wrote: > Thanks but I am looking of any regexp substitution. > > sorry for typo : I need to change 9/9/1973 to 09/09/1973
Some of the solutions posted are almost straight out of my Ineffective Perl Programming talk. *sigh* Assuming its coming from localtime: my($month, $day, $year) = (localtime)[3,4,5]; sprintf "%02d/%02d/%04d", $month + 1, $day, 1900 + $year; # [1] If you literally want to change formats: my $date = '9/9/1973'; my($month, $day, $year) = split '/', $date; $date = sprintf "%02d/%02d/%d", $month, $day, $year; sprintf is one of the most underused functions in Perl, probably because we don't use it for the traditional stuff C does. In Perl is just a really helpful formatting command. If you ever find yourself doing: $foo < 10 ? "0$foo" : $foo; $bar < 10 ? "0$bar" : $bar; print "Some stuff and $foo - $bar"; please please please do this instead: printf "Some stuff and %02d - %02d", $foo, $bar; Not only is it shorter and visually clearer, but it will save me money on airfare. [1] I'm American. We do everything backwards, including our date formats. Anyone that objects will be reminded which side of the road you drive on. -- Michael G. Schwern <[EMAIL PROTECTED]> http://www.pobox.com/~schwern/ Perl Quality Assurance <[EMAIL PROTECTED]> Kwalitee Is Job One Don't step on my funk