我想制作'查找/更改'功能。
通过使用s / / /或tr / / /更改一些单词,但我觉得它不起作用。
open(TXT, ">>text.txt");
my $str = <TXT>;
$str =~ s/'a'/'b'/;
print TXT $str;
答案 0 :(得分:2)
您的程序会打开追加的文件,因此您将无法从中读取该行my $str = <TXT>
行将$str
设置为undef
您可以使用
将其写为单行控制台命令perl -i.backup -pe"s/'a'/'b'/g" myfile
在整个文件中用字符串'a'
替换字符串'b'
(包括引号),并将备份保存到myfile.backup
或者你可以写一个这样的程序
use strict;
use warnings;
open my $fh, '<', 'myfile' or die qq{Unable to open input file: $!};
while (<$fh>) {
s/'a'/'b'/g;
print $_;
}
使输入文件保持不变并将修改后的数据发送到STDOUT,因此可以使用命令将其重定向到新文件
perl modify.pl myfile > myfile.new
答案 1 :(得分:-1)
看看这个例子:
...
open RH, "text.txt" or die $!;
chomp(my @lines = <RH>);
close RH;
open WH, ">text.txt" or die $!;
foreach my $line (@lines) {
$line =~ s/'a'/'b'/;
print WH "$line\n";
}
close WH;
...