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!!
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.