There’s a string macro which is a bit tidier. I wonder why Format objects aren’t made scalar under broadcasting, since they aren’t iterable / indexable. That’s a small change, a larger one would be to make them callable:
julia> using Printf: format, @format_str, Format
julia> Broadcast.broadcastable(f::Format) = Ref(f)
julia> format.(format"a%.2d", 1:10)
10-element Vector{String}:
"a01"
[...]
julia> (f::Format)(x) = format(f, x)
julia> format"a%.2d".(1:10)
10-element Vector{String}:
"a01"
[...]
This is a lot closer to what I would expect from julia - in particular the last one. But it is annoying that @format_str is not exported and it does not work “out of the box”.