【发布时间】:2016-11-13 03:12:30
【问题描述】:
好的 - 我需要 Perl Guru 的帮助。一位同事向我提供了他们支持的 Perl 应用程序的代码,以及它在将数据写入 Oracle 之前如何对值进行编码。不要问我为什么要进行这种编码(似乎是针对特殊字符的)。这些值正在写入 Oracle 中的 CLOB。我需要在 SQL Server 的 SSIS 包中使用等效解码。
基本上,我正在使用 SSIS 包从 Oracle 数据库中读取数据,并且需要对这些值进行解码。单词之间的“+”号很容易使用替换语句(不确定这是最好的方法,但到目前为止似乎有效)。
这超出了我的技能范围,因为我的 Perl 脚本技能有限(是的,我读过一些书,但结果并不像我想象的那么容易,因为我不太了解 Perl)。我只对解码字符串而不是编码感兴趣。
顺便说一句,作为一个提示,我知道 %29 等于“)”符号。看起来正在使用正则表达式,但我也不擅长使用它(我知道我需要学习它)。
sub decodeValue($)
{
my $varRef = shift;
${$varRef} =~ tr/+/ /;
${$varRef} =~ s/%([a-fA-F0-9]{2})/pack("C",hex($1))/eg;
${$varRef} =~ tr/\cM//;
${$varRef} =~ s/"/\"/g;
return;
}
sub encodeValue($)
{
my $varRef = shift;
# ${$varRef} =~ tr/ /+/;
${$varRef} =~ s/"/\"/g;
${$varRef} =~ s/'/\'/g;
${$varRef} =~ s/(\W)/sprintf( "%%%x", ord($1) )/eg;
return;
}
【问题讨论】:
-
信息太多,归结为小样本输入、来自同一输入的所需输出、当前代码、当前输出/错误消息以及关于您感到困惑的最小 cmets。祝你好运。
-
请注意帖子底部的标签。您在创建问题时设置它们(如果您不花时间查看,网站会“猜测”并包括不相关的问题)。您有“oracle”,我将继续删除它,但当您发布问题时,这是您的工作!