The old pattern would match files with strange extensions like *.ry or
*.lpp. Refactor it to only include files with known extensions, and to make
it more readable.
Per Andrew Dunstan's suggestion.
    foreach my $fileNameWithPath (sort keys %{ $self->{files} })
    {
        confess "Bad format filename '$fileNameWithPath'\n"
-         unless ($fileNameWithPath =~ /^(.*)\\([^\\]+)\.[r]?[cyl]$/);
+         unless ($fileNameWithPath =~ /^(.*)\\([^\\]+)\.(c|cpp|y|l|rc)$/);
        my $dir      = $1;
        my $fileName = $2;
        if ($fileNameWithPath =~ /\.y$/ or $fileNameWithPath =~ /\.l$/)
 
    foreach my $fileNameWithPath (sort keys %{ $self->{files} })
    {
        confess "Bad format filename '$fileNameWithPath'\n"
-         unless ($fileNameWithPath =~ /^(.*)\\([^\\]+)\.[r]?[cyl]$/);
+         unless ($fileNameWithPath =~ /^(.*)\\([^\\]+)\.(c|cpp|y|l|rc)$/);
        my $dir  = $1;
        my $file = $2;