Our flow is thousands of lines of Tcl code around all the cadence and synopsys tools. Then we write more Tcl to create the power grid, create blockages, etc.
I'm also a big fan of the full-fat Tk-capable Tcl in Altera's SignalTap / Virtual JTAG - I used it recently to plot histograms on-demand for profiling RAM / Cache accesses.
But to be honest, while I feel like Perl has a lot of advantages (full perlre, full access to POSIX APIs, slightly better performance), I still can't look at it and keep my last meal down. Tcl having an event loop and Tk being native are pretty nice too.
It’s not quite “complete” with respect to all the usual LSP features (just does linting and formatting for now), but it’s a starting point!
That means it's a good language to extend your program. I don't know how it compares to Lua, which seems to have replaced it in that space.
Perl is a nightmare to interop! They should have won an award for that. It took effort.
Python is slightly cleaner than perl, but not much.
But then - isn't that the case for other scripting languages these days? Or are they too complex and with "strings attached"?