in reply to pattern matching
Very close but you can't do it quite that way. Here is your code in working form:
$source =~ m!(\d{1,2})[-/](\d{1,2})[-/](\d{2,4})!g; my $day = $1; if( $day == 1 or $day == 21 or $day == 31 ){ $day .= 'st'; }elsif( $day == 2 or $day == 22 ){ $day .= 'nd'; }elsif( $day == 3 or $day == 23 ){ $day .= 'rd'; }else { $day .= 'th'; }
I have shown you the use or character classes and different regex delimiters (you can use ! or anything else for that matter, not just /) as well as the .= operator. A little indenting makes it easier to read. The last case is just an else as we want to catch everything that is not a st/nd/rd with th
This also works and demonstrates an alternative to the if elseif else structure for simple stuff
$day .= ( $day == 1 or $day == 21 or $day == 31 ) ? 'st' : ( $day == 2 or $day == 22 ) ? 'nd' : ( $day == 3 or $day == 23 ) ? 'rd' : 'th';
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
|
|---|