-1

MySQL テーブルに入力するファイルがあります。悲しいことに、ファイルには二重引用符 (") とバックスラッシュ () が含まれています。Perl で二重引用符を見つけて置き換える方法を見つけました (またはそう思う)。ばかげたバックスラッシュをすべて削除します。

誰にもアイデアはありますか?これがスニペットの外観です...申し訳ありませんが、私はまだ学んでいる初心者です!

open(FILE,$fileName) || die("Cannot Open File");
my(@fcont) = <FILE>;
close FILE;

my $searchStr1=qq{"};
my $replaceStr1=qq{ };

open(FOUT,">$fileName") || die("Cannot Open File");
foreach $line (@fcont) {
    $line =~ s/$searchStr1/$replaceStr1/g;
    print FOUT $line;
}

#not sure if searching for backslash will work
my $searchStr2="\\";
my $replaceStr2=qq{ };

open(FOUT,">$fileName") || die("Cannot Open File");
foreach $line (@fcont) {
    $line =~ s/$searchStr2/$replaceStr2/g;
    print FOUT $line;
}

close FOUT;
4

3 に答える 3

1

tr///あるリテラル文字列を別のリテラル文字列に置き換える場合、代わりにを使用する方が効率的s///gです。

$line =~ tr{"\\}{' };
于 2012-11-12T08:38:01.163 に答える
1

" または \ を空白に置き換えます

$line =~ s/"|\\/ /g;
于 2012-11-12T07:55:38.833 に答える
1

検索パターンを二重引用符で囲まれた変数に入れる場合は、バックスラッシュを 2 倍にする必要があります。

my $searchStr2="\\\\";

変数には が含まれる\\ため、正規表現は引き続き 2 つのバックスラッシュを取得します。最初のバックスラッシュは 2 番目のバックスラッシュをエスケープして、リテラルのバックスラッシュと一致します。

于 2012-11-12T07:32:34.993 に答える