1
1
openmpi/contrib/search_replace.pl
2005-07-03 14:29:16 +00:00

68 строки
1.8 KiB
Perl
Исполняемый файл

#!/usr/bin/perl
#
# Copyright (c) 2004-2005 The Trustees of Indiana University.
# All rights reserved.
# Copyright (c) 2004-2005 The Trustees of the University of Tennessee.
# All rights reserved.
# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved.
# Copyright (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
use File::Find;
if (scalar(@ARGV) != 2) {
print "Usage: search_replace.pl search_string replace_string\n";
exit 1;
}
$search_string = @ARGV[0];
$replace_string = @ARGV[1];
print "search: $search_string\n";
print "replace: $replace_string\n";
sub replace {
# don't process directories, and dont' recurse down
# "special" directories
if ( -d $_ ) {
if ((/\.svn/) || (/\.deps/) || (/\.libs/)) {
$File::Find::prune = true;
}
return;
}
# $File::Find::name is the path relative to the starting point.
# $_ contains the file's basename. The code automatically changes
# to the processed directory, so we want to open / close $_.
$process_file = $_;
print "--> $File::Find::name\n";
my $replace = 0;
open(INFILE, $process_file) ||
die "Could not open " . $File::Find::name . ": $!\n";
open(OUTFILE, "> " . $process_file . ".tmp") ||
die "Could not open " . $File::Find::name . ".tmp: $!\n";
while (<INFILE>) {
$replace += s/$search_string/$replace_string/g;
print OUTFILE $_;
}
close(OUTFILE);
close(INFILE);
if ($replace) {
rename($process_file . ".tmp", $process_file);
} else {
unlink($process_file . ".tmp");
}
}
find(\&replace, ".");