Re: Getting a / when regex should produce nothing
Chris Bennett <[email protected]>
| Newsgroups | gmane.comp.apache.mod-perl |
|---|---|
| Organization | Bennett Construction |
| Message-ID | <[email protected]> |
On 04/25/10 08:57, André Warnier wrote:
> Chris Bennett wrote:
> ...
>
> > $article_file = $q->param("articlefilename") || '';
>
> ok, so suppose it is "12345.html.en"
> ...
>
>> if ($article_file =~ /^([a-zA-Z0-9_-]+\.html.?\w?\w?)$/) {
>> $article_file = $1;
>> } else {
>> $article_file = '';
>> }
>
> ok, matches, so it's still "12345.html.en"
>
>> $article_backup_file = $article_file;
>
> still "12345.html.en"
>
>> $article_backup_file =~ s/\.html$/_backup.html/;
>>
>
> still "12345.html.en"
> (because \.html$ did not match)
>
>
>
I have since changed to:
$article_file = $q->param("articlefilename") || '';
if ($debug) { $error .= qq{<p>A $article_file</p>};}
if ($article_file =~ /^([a-zA-Z0-9_-]+\.html(?:\.\w{2})?)$/) {
$article_file = $1;
} else {
$article_file = '';
}
if ($debug) { $error .= qq{<p>B $article_file</p>};}
$article_backup_file = $article_file;
if ($article_backup_file =~ /\.html(?:\.\w{2})?$/) {
$article_backup_file =~ s/\.html/_backup.html/;
} else {
$error .= "<p>Please choose an existing File Name ( like y_9-e.html or
yyy.html.xx ) or use Fill in Template to create a new file.</p>";
}
I think this does the trick.
Please feel free to break this! :)