我想在名为1_classification.dat,2_classification.dat等所有文本文件中将"blue"替换为"red".我想编辑同一个文件,所以我尝试了这个代码,但它不起作用.我哪里错了?
@files=glob("*_classification.dat");
foreach my $file (@files)
{
open(IN,$file) or die $!;
<IN>;
while(<IN>)
{
$_='~s/blue/red/g';
print IN $file;
}
close(IN)
}
Run Code Online (Sandbox Code Playgroud)
Zai*_*aid 123
单线有什么问题吗?
$ perl -pi.bak -e 's/blue/red/g' *_classification.dat
Run Code Online (Sandbox Code Playgroud)
说明
-p进程,然后<>逐行打印-i激活就地编辑.使用.bak扩展名备份文件小智 12
这里没有现有的答案提供了如何从脚本(不是单行)中完成此操作的完整示例.这是我做的:
rename($file, $file.'.bak');
open(IN, '<'.$file.'.bak') or die $!;
open(OUT, '>'.$file) or die $!;
while(<IN>)
{
$_ =~ s/blue/red/g;
print OUT $_;
}
close(IN);
close(OUT);
Run Code Online (Sandbox Code Playgroud)
bar*_*art 11
$_='~s/blue/red/g';
呃,什么?
只是
s/blue/red/g;
Run Code Online (Sandbox Code Playgroud)
或者,如果你坚持使用变量(使用$ _时不需要,但我只想显示正确的语法):
$_ =~ s/blue/red/g;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90139 次 |
| 最近记录: |