perl - 在 Perl 中使用带有哈希的字典的 Python 等效字符串格式化

标签 perl hash dictionary string-formatting

我喜欢 Python 可以用字典格式化字符串的方式:

print "%(key1)s and %(key2)s" % aDictObj

我想用哈希在 Perl 中实现同样的目标。是否有任何片段或小型库可以这样做?

编辑:

感谢您尝试这个答案。至于我,我提出了一小段代码:
sub dict_replace
{
    my ($tempStr, $tempHash) = @_;
    my $key;

    foreach $key (sort keys %$tempHash) {
        my $tmpTmp = $tempHash->{$key};
        $tempStr =~ s/%\($key\)s/$tmpTmp/g;
    }

    return $tempStr;
}

它只是工作。这不像使用字典的 Python 字符串格式化那样功能完整,但我想对此进行改进。

最佳答案

从python文档:

The effect is similar to the using sprintf() in the C language.



所以这是使用 printf 的解决方案或 sprintf
my @ordered_list_of_values_to_print = qw(key1 key2);
printf '%s and %s', @ordered_list_of_values_to_print;

还有一个使用命名参数的新模块:
use Text::sprintfn;
my %dict = (key1 => 'foo', key2 => 'bar');
printfn '%(key1)s and %(key2)s', \%dict;

关于perl - 在 Perl 中使用带有哈希的字典的 Python 等效字符串格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7950530/

相关文章:

encoding - 如果 SHA-1 哈希值只有 160 位,为什么它却有 40 个字符长?

python - 将具有列表作为值的 Python 字典转换为简单字典

python字典将键的值放入一个列表中,其中键在另一个列表中

list - 如何检查变量是否在列表中?

perl - 如何在 Perl 中将 ISO8601 时间戳转换为 unix 时间?

swift - 结合日期和字符串的散列

algorithm - 哈希表中的二次测试

python - 如何使用 Python 方法和实例将文件中的数据存储在字典中?

perl - Perl 脚本无法通过键盘(代码页 65001,UTF-8)接受变音字符

perl - 如何创建数字标尺和均匀间隔的数字宽度标记