in reply to python like named placeholders sprintf ?

does anyone know a way to achieve/emulate this behavior

Perl's sprintf can refer to arguments by number, but not by name.

>perl -le"print sprintf '%2$s %1$s', qw( a b )" b a

Double-quoted strings interpolate, so all you need

$hello = "Hello $name";

If you're asking for the format to be variable, then you're asking for a templating system. There are many of those. Here's a fair approximation of the syntax you requested:

use String::Interpolate qw( ); sub format { my ($pat, $args) = @_; my $t = String::Interpolate->new($args); $t->($pat); return "$t"; } my $hello = format('Hello $name', { name => 'World' });

Update: Added code
Update: haoess found Text::Sprintf::Named