Perl &引用;Net::Netconf::Manager";将RPC请求中的下划线转换为连字符

Perl &引用;Net::Netconf::Manager";将RPC请求中的下划线转换为连字符,perl,ietf-netconf,Perl,Ietf Netconf,我正在使用 使用RPC命令查询设备。在RPC命令中,我应该发送一个参数列表,因此我在散列中添加查询参数。其中一个参数是verbosity\u level <verbosity-level>abcd</verbosity-level> 请注意,我在这个参数中使用了下划线。。当我打印哈希时,它仍然是下划线 但是,当我打印发送到设备的XML RPC请求时,参数更改为详细级别 <verbosity-level>abcd</verbosity-level>

我正在使用 使用RPC命令查询设备。在RPC命令中,我应该发送一个参数列表,因此我在散列中添加查询参数。其中一个参数是
verbosity\u level

<verbosity-level>abcd</verbosity-level>
请注意,我在这个参数中使用了下划线
。当我打印哈希时,它仍然是下划线

但是,当我打印发送到设备的XML RPC请求时,参数更改为
详细级别

<verbosity-level>abcd</verbosity-level>
abcd
而不是

<verbosity_level>abcd</verbosity_level>
abcd
所以设备说它不知道这种说法


为什么下划线会转换为连字符?

执行此操作的代码位于的第492行 . 这是一个简单的替代,没有任何评论来解释它为什么会出现

我所能想到的就是把那句话注释掉

($tag = $field) =~ s/_/-/g
并将其替换为

$tag = $field

这应该会让你的事情进展顺利。同时,您可以通过电子邮件向JUniter Networks Perl团队发送netconf-support@juniper.net并询问此事。如果您这样做了,请让我们知道您的回答。

执行此操作的代码位于的第492行 . 这是一个简单的替代,没有任何评论来解释它为什么会出现

我所能想到的就是把那句话注释掉

($tag = $field) =~ s/_/-/g
并将其替换为

$tag = $field

这应该会让你的事情进展顺利。同时,您可以通过电子邮件向JUniter Networks Perl团队发送netconf-support@juniper.net并询问此事。如果您这样做了,请让我们知道响应

可能是Junos在其XML标记中没有任何下划线,并在将RPC请求对象化时添加了一些糖的产物。我猜直到最近才有很多其他供应商在做netconf。谢谢Borodin。我在github的netconf perl API中提出了一个问题。似乎他们只是在标准化RPC请求中使用连字符而不是下划线。这个问题可以在下面的链接中跟踪,可能是Junos的XML标记中没有任何下划线,并在RPC请求的对象化中添加了一些糖分。我猜直到最近才有很多其他供应商在做netconf。谢谢Borodin。我在github的netconf perl API中提出了一个问题。似乎他们只是在标准化RPC请求中使用连字符而不是下划线。可以在以下链接中跟踪该问题