-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

如果将搜索模式放在双引号变量中,则需要在反斜杠上加倍:

my $searchStr2="\\\\";

然后变量将包含\\,因此正则表达式仍然有两个反斜杠,第一个转义第二个,以便它匹配文字反斜杠。

于 2012-11-12T07:32:34.993 回答