私のコードは正常に動作していましたが、今は壊れています。問題を軽減するには、次のようにします。セパレータでソース・ストリングを(データベースからは重要ですが)分割する必要があります。セパレータは固定されておらず、ユーザが文字列で指定します。私はこれをやりました:Perlでユーザー提供の文字列区切りに沿って文字列を分割するにはどうすればよいですか?
@results = split($splitString, $sourceStr);
これは、ユーザーがセパレータとしてプラス記号(+)を入力すると壊れます。メッセージは少しわかりにくいです:
Quantifier follows nothing in regex; marked by <-- HERE in m/+ <-- HERE
スプリットは文字列は期待していませんが、正規表現は分かりません。しかし、私は$ splitStringを動作させる方法でエスケープする方法を見つけることはできません。ここに私のおもちゃの例があります:
my $s = 'string 1 + $splitChar + string 2';
my $splitChar = "+";
my @result = split(/\\$splitChar/, $s);
print "num of results ".scalar(@result)."\n";
foreach my $value (@result) {
print "$value\n";
}
しかし、全く分裂しません。私はいくつかのバリエーションを試しましたが、どれも効果がありませんでした。ユーザー指定のセパレータはおそらく1文字に制限されていることに注意してください。ただし、複数文字の解決策が優れています。
(はい、独自の分割機能を作成することもできますが、それは重要ではありません)。
(一重引用符で囲まれた文字列の例では$splitChar
は目的にかなっていますが、それは明らかです)。
偉大な、私は\ Qと\ Eについて知りませんでした。それが私の必要なものです。どうもありがとう –