[Israel.pm] Interpolation in Python (Sort-of)
Shlomi Fish
shlomif at iglu.org.il
Mon Nov 13 06:07:46 PST 2006
In regards to Ran's presentation about quoting in Perl, it turns out Python
has an interpolation-like feature:
[[[[[[[[
shlomi:~$ python
Python 2.4.3 (#2, Oct 6 2006, 15:32:41)
[GCC 4.1.1 20060724 (prerelease) (4.1.1-3mdk)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> "Hello %(name)s, it's %(hour)02d:%(min)02d now." %
{ 'name':"Haim",'hour':16,'min':5 }
"Hello Haim, it's 16:05 now."
>>>
]]]]]]]]
These are called named (sprintf) conversions and are a feature of Python's "%"
operator that implements sprintf-like functionality. One difference from Perl
is that you need to use it with a hash (or dicitionary in Python's
terminology). I wonder if you can pass it the symbol table, to get a more
Perl like "Hello $name!" behaviour. And naturally, it doesn't support more
complex expressions than simple parameters.
I was looking for a feature like that for a Test::Run plugin I'm writing now.
(For its mini-template system). Searching for "named conversions" in Google
yielded a changelog that implied that Python has them, and this page
confirmed this:
http://docs.python.org/lib/typesseq-strings.html
Since I couldn't find anything of relevance on CPAN, and the people on
Freenode's #perl said they weren't aware of anything like that, I guess I'm
going to write an implementatoin of this for Perl.
Regards,
Shlomi Fish
---------------------------------------------------------------------
Shlomi Fish shlomif at iglu.org.il
Homepage: http://www.shlomifish.org/
Chuck Norris wrote a complete Perl 6 implementation in a day but then
destroyed all evidence with his bare hands, so no one will know his secrets.
More information about the Perl
mailing list