In the Perl.tmLanguage I think you could alter the “format” sintax to something like:
<dict>
<key>begin</key>
<string>\b(format)\s+([A-Za-z_]+)?\s*=</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.function.perl</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.function.format.perl</string>
</dict>
</dict>
<key>end</key>
<string>^\.\s\t]*$</string>
<key>name</key>
<string>meta.format.perl</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#line_comment</string>
</dict>
<dict>
<key>include</key>
<string>#variable</string>
</dict>
</array>
</dict>
because you can use a name with underscore and some other chars. the ending “.” can come with tailing spaces and tab.