Ok - 私はPerl Guruの助けが必要です。同僚は、サポートしているPerlアプリケーションのコードと、Oracleにデータを書き込む前に値をエンコードする方法を教えてくれました。なぜ彼らがこのエンコーディングをしたのか(特殊文字のように見える)私に聞かないでください。値はOracleのCLOBに書き込まれます。 SQL ServerのSSISパッケージで使用するためには、同等のデコードが必要です。PerlスクリプトをT-SQLに翻訳する
基本的に、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;
}
あまりにも多くの情報を、現在のコード、現在の出力/エラーmsg、混乱している箇所に関するコメントなどがあります。がんばろう。 – shellter
あなたの記事の一番下にあるタグをメモしてください。質問を作成するときに設定します(また、サイトには「推測」があり、見た目に時間がかからない場合は無関係です)。あなたは私が先に進んで削除する「オラクル」を持っていますが、それは質問を投稿するときのあなたの仕事です! – mathguy