fileset: replacement
[perl/file-rewrite.git] / lib / File / Rewrite.pm
index bb41513654d7de4fd731fdccdfcb825628df5329..5a30a32989c80df3b8e91dca1ed9596333bef71e 100644 (file)
@@ -10,20 +10,30 @@ our @EXPORT_OK = qw(fileset);
 
 sub fileset {
        my ($filename, $replace, $search) = @_;
-       die if defined $replace;
+       $search = $replace if not defined $search;
        my $tmpname = "$filename.$$.tmp";
        my $changes = 0;
 
        open my $src,  '<', $filename;
        open my $dest, '>', $tmpname;
        while (readline $src) {
+               chomp;
                if ($_ =~ (ref $search ? $search : qr/^\Q$search\E$/)) {
+                       if (defined $replace and $_ eq $replace) {
+                               undef $replace;
+                       }
+                       else {
                                $changes++;
                                next;
+                       }
                }
                print {$dest} $_, $/;
        }
        close $src;
+       if (defined $replace) {
+               $changes++;
+               print {$dest} $replace, $/;
+       }
        close $dest;
 
        if ($changes) {