gpt4 book ai didi

perl - 我正在尝试为 perl 中的错误消息的占位符创建一个模板。有什么建议么?

转载 作者:行者123 更新时间:2023-12-03 09:04:20 25 4
gpt4 key购买 nike

我目前有一个解决方案,但它可能不是最通用的代码。我知道有一种方法可以将模板与变量的占位符一起使用,而不是将实际的运行时参数放入错误消息中。如果我的要求不清楚,请道歉。我没有太多关于如何使用模板的知识。

 use constant {
#list will contain more errors

ERROR_SW => {
errorCode => 727,
message => sub{"Not able to ping switch $switch_ip in $timeout seconds"},
fatal => 1,
web_page => 'http://www.errorsolution.com/727',
}
};

sub error_post {
my ($error) = @_;
print($error->{message}());
}
error_post(ERROR_SW);

我正在尝试对其进行设计,以便我可以为 $switch_ip 和 $timeout 使用占位符,而不必将消息声明为子例程引用。
像下面
 use constant {
#list will contain more errors

ERROR_SW => {
errorCode => 727,
message => "Not able to ping switch **{{switch_ip}}** in **{{timeout}}** seconds",
fatal => 1,
web_page => 'http://www.errorsolution.com/727',
}
};

sub error_post {
my ($error) = @_;
print($error->{message});
}
error_post(ERROR_SW);

它们也出现在代码中,如下所示:
%%error%%

我不确定如何创建将处理参数的模板。
再次为含糊不清或没有很好地解释这一点道歉。

最佳答案

我无法立即看到 printf 未提供的这种方法为您带来了什么格式 I explained before , 但
我建议你使用 Text::Template 模块来做到这一点。它没有 Template::Toolkit 广泛。但完全适合您的目的

这是使用 Text::Template 的程序看起来像。希望对你有帮助

use strict;
use warnings 'all';

use Text::Template qw/ fill_in_string /;

use constant {
ERROR_SW => {
errorCode => 727,
message => 'Not able to ping switch {$switch_ip} in {$timeout} seconds',
fatal => 1,
web_page => 'http://www.errorsolution.com/727',
}
};

my $values = {
switch_ip => '192.168.0.1',
timeout => 60,
};

sub error_post {
my ($error) = @_;
print( fill_in_string($error->{message}, hash => $values) );
}

error_post(ERROR_SW);

输出

Not able to ping switch 192.168.0.1 in 60 seconds

关于perl - 我正在尝试为 perl 中的错误消息的占位符创建一个模板。有什么建议么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35941040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com