gpt4 book ai didi

regex - Perl Regex 将字符串转换为十六进制警告未初始化的值或使用/x

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

我在 perl 中使用正则表达式将字符串转换为十六进制,但是,当我这样做时,我收到来自 perl 评论家或 perl 的警告:

#$test is defined, i just put the regex code snippet here...
#this will trigger a warning from perl critic
#warning: use of regex expression without "/x" expression..
$text =~ s/(.)/sprintf("%x",ord($1))/eg;

#this will trigger a a warning at run time
#warning: "uninitialized value $1 in regexp compilation"
$text =~ m{s/(.)/sprintf("%x",ord($1))/eg}x;

有没有办法编写上面的代码而不会从 Perl 评论家那里得到警告或反馈?

我认为问题是因为 ord 正在处理未定义的值,并且当您输入/x 然后检查正则表达式时认为 $1 的值无效。

最佳答案

这个评论家就是所谓的误报。没有必要或理由 /x这里。如果你试图让每一个批评者保持沉默,你最终会得到奇怪的代码。也就是说,评论家推荐

s/(.)/sprintf("%x",ord($1))/exg

此外,避免转换换行符可能毫无意义。如果是这样,您想使用 /s也。
s/(.)/sprintf("%x",ord($1))/sexg

关于regex - Perl Regex 将字符串转换为十六进制警告未初始化的值或使用/x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12924966/

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