Re: regex question matching dates

[email protected] ("John W. Krahn")
Newsgroups perl.beginners
Message-ID <[email protected]>
Richard Lee wrote:
> 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]*";
> 
> 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/ ) {
                   ^^^^^
So you don't want to test for October?



John
-- 
Perl isn't a toolbox, but a small machine shop where you
can special-order certain sorts of tools at low cost and
in short order.                            -- Larry Wall
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.