我需要一个打开并在文件中搜索特定字符串的Perl脚本,例如(foo1 = 10),如果存在则应将其替换为(foo1 = 5)如果它不存在则应将其附加到文件的结尾
由于
更新
到目前为止,这是我的代码:
#!/usr/bin/env perl
my $fileName = $ARGV[0];
my $searchStr = $ARGV[1];
my $replaceStr = $ARGV[2];
print( "\nFilename:", $fileName, "\n" );
print( "Search String:", $searchStr, "\n" );
print( "Replace String:", $replaceStr, "\n\n" );
open( FILE, $fileName );
|| die("Cannot Open File");
my (@fcont) = <FILE>;
close FILE;
open( FOUT, ">$fileName" ) || die("Cannot Open File");
foreach $line (@fcont) {
$line =~ s/$searchStr/$replaceStr/g;
}
close FOUT;
我只需要一个计算替换次数的计数器,如果它等于零,则追加到文件末尾。
任何人都可以提供帮助,我们将非常感激
答案 0 :(得分:4)
直接来自perlfaq5 - How do I change, delete, or insert a line in a file, or append to the beginning of a file?
在所有条件相同的情况下,我可能会使用Tie::File
来解决这个问题。
use strict;
use warnings;
use Tie::File;
my $fileName = $ARGV[0];
my $searchStr = $ARGV[1];
my $replaceStr = $ARGV[2];
tie my @fcont, "Tie::File", $fileName;
my $count;
for (@fcont) {
$count++ if s/\Q$searchStr/$replaceStr/;
}
push @fcont, $replaceStr if ! $count;