Re: regex question matching dates
[email protected] (Richard Lee)
| Newsgroups | perl.beginners |
|---|---|
| Message-ID | <[email protected]> |
John W. Krahn wrote:
> Richard Lee wrote:
>> given then ARGV[0] is 2008052803, why woulnd't below regex match them??
>
> 2008052803 is a ten digit number.
>
>
>> } elsif ( $ARGV[0] =~ m/\b2008[01][1-31]([01][0-9]|2[0-3])\b/ ) {
>
> Your pattern matches eight digits with a \b word boundary at each end
> so it will never match a ten digit number. Also the character class
> [1-31] could be more simply written as [1-3] (repeated characters are
> ignored.)
>
>
>> @array = qx#ls -tr $directory/$ARGV[0]*#;
>
> Why not do that directly in perl:
>
> @array = map $_->[0], sort { $a->[1] <=> $b->[1] } map [ $_, -M
> ], glob "$directory/$ARGV[0]*";
>
>
>> #2008052803
>
>
> John
hey thanks!
this works fine now
} elsif ( $ARGV[0] =~
m/\b2008(0[1-9]|1[12])(0[1-9]|1[0-9]|2[0-9]|3[01])([01][0-9]|2[0-3])\b/ ) {
@array = qx#ls -tr $directory/$ARGV[0]*#;
#2008052803
} else {
I will try that direct perl solution as well!!