53 lines
927 B
Plaintext
53 lines
927 B
Plaintext
|
#!/usr/bin/perl -w
|
||
|
|
||
|
use strict;
|
||
|
use warnings;
|
||
|
|
||
|
|
||
|
my $numarg = $#ARGV + 1;
|
||
|
if ($numarg < 2) {
|
||
|
print "Usage: str_replace Search Replace File\nOr: STDIN str_replace Search Replace\n";
|
||
|
exit 1;
|
||
|
}
|
||
|
|
||
|
my $find=$ARGV[0];
|
||
|
my $replace=$ARGV[1];
|
||
|
my $file;
|
||
|
my $contents;
|
||
|
my $found=0;
|
||
|
my $fh;
|
||
|
|
||
|
if(defined $ARGV[2]){
|
||
|
$file=$ARGV[2];
|
||
|
open($fh, '<', $file) or die "Cannot open the file '$file'";
|
||
|
{
|
||
|
local $/;
|
||
|
$contents = <$fh>;
|
||
|
}
|
||
|
close($fh);
|
||
|
}
|
||
|
else{
|
||
|
{
|
||
|
local $/;
|
||
|
$contents = <STDIN>;
|
||
|
}
|
||
|
}
|
||
|
my $pos = index($contents, $find);
|
||
|
while ( $pos > -1 ) {
|
||
|
if(substr( $contents, $pos, length( $find ), $replace )){$found =$found+1;}
|
||
|
$pos = index( $contents, $find, $pos + length( $replace ));
|
||
|
}
|
||
|
|
||
|
if(!defined $ARGV[2]){
|
||
|
print $contents;
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
if($found==0) {print "Nothing replaced\n";}
|
||
|
else{ print "$found occurrences of '$find' have been replaced with '$replace'\n";}
|
||
|
|
||
|
|
||
|
open($fh, '>', $file);
|
||
|
print $fh $contents;
|
||
|
close $fh;
|