perl将花括号替换为普通括号

perl将花括号替换为普通括号,perl,replace,Perl,Replace,我需要写一个脚本来查看一个文件,并用普通括号替换任何花括号。到目前为止,我已经: use strict; use warnings; open(INFILE,"<rscore") || die "Couldn't open rscore for reading!\n"; open(OUTFILE,">rscore.new") || die "Couldn't open rscore.new for writing!\n"; while(<INFILE>){ $_ =~

我需要写一个脚本来查看一个文件,并用普通括号替换任何花括号。到目前为止,我已经:

use strict;
use warnings;
open(INFILE,"<rscore") || die "Couldn't open rscore for reading!\n";
open(OUTFILE,">rscore.new") || die "Couldn't open rscore.new for writing!\n";
while(<INFILE>){
  $_ =~ s/{/(/gi; #g for every occurrence, i for case-insensitive
  print OUTFILE $_;
}
close INFILE;
close OUTFILE;
rename("rscore.new","rscore") || die "Couldn't rename the new file!\n"; 
这可能是愚蠢的事情。此外,如果有一种更有效的方法(我肯定有),我愿意接受建议。

试试以下方法:

$string=~tr/{}/()/

请尝试以下方法:


$string=~tr/{}/()/

这是一个perl单行程序

$ perl -lpe 'tr |{}|()|' <infile >outfile
$perl-lpe'tr |{}|()| outfile

这是一个perl单行程序

$ perl -lpe 'tr |{}|()|' <infile >outfile
$perl-lpe'tr |{}|()| outfile

这是一个用于就地编辑文件的perl单行程序

perl -pi -e 's/{/(/g;s/}/)/g' your_file
下面将在控制台上打印输出

perl -p -e 's/{/(/g;s/}/)/g' your_file

这是一个用于就地编辑文件的perl单行程序

perl -pi -e 's/{/(/g;s/}/)/g' your_file
下面将在控制台上打印输出

perl -p -e 's/{/(/g;s/}/)/g' your_file

您需要用\来转义左括号。您的语法错误似乎是由注释中的换行引起的,导致“不区分大小写”被拆分,“不区分大小写”最后出现在
打印
上方的未注释行上。这可能是因为使用了不适合编写代码的编辑器;(替换部分没有什么特别之处吗?您需要用\来转义左括号。您的语法错误似乎是由注释中的换行符引起的,导致“不区分大小写”被拆分和“不区分大小写”最后出现在
打印
上方的未注释行上。这可能是因为使用了不适合编写代码的编辑器。Lone Shepherd:不,你没有;(此时替换部分>是否有什么特别之处?@brucezepplin:
$
是shell提示符,用于指示这是类似sh的shell的命令行(bash等人)。如果您在没有bash克隆的windows上,则可能需要将单引号替换为双引号:
c:>perl-lpe“tr |{}|()|”outfile
。同样,
c:>
只是shell提示符,所以不要键入它。
他可能甚至不需要perl脚本,而是直接使用
tr
命令:
tr'{}'()“infle>outfile
>此时出乎意料?@brucepplin:The
$
是shell提示符,用于指示这是类似sh的shell的命令行(bash等人)。如果您在windows上没有bash克隆,则可能需要将单引号替换为双引号:
c:>perl-lpe“tr |{}()|”outfile
。同样,
c:>
只是shell提示符,所以不要键入它。
他可能甚至不需要perl脚本,而是直接使用
tr
命令:
tr'{}'()'infle>outfile