9 our @EXPORT_OK = qw(fileset);
12 my ($filename, $replace, $search) = @_;
13 my $tmpname = "$filename.$$.tmp";
16 $search = $replace if not defined $search;
18 # generate a single regex to emulate smart match
19 $search = [$search] unless ref $search eq 'ARRAY';
20 $search = join('|', map { ref $_ ? $_ : "^\Q$_\E\$" } @$search);
22 open my $src, '<', $filename;
23 open my $dest, '>', $tmpname;
24 while (readline $src) {
26 if ($_ =~ /$search/s) {
27 if (ref $replace eq 'ARRAY') {
28 if (@$replace and $_ eq $replace->[0]) {
36 elsif (defined $replace and $_ eq $replace) {
47 if (defined $replace) {
48 for (ref $replace eq 'ARRAY' ? @$replace : $replace) {
56 rename $tmpname, $filename;
72 use File::Rewrite 'fileset';
73 fileset('/tmp/somefile', undef, qr/match/);
79 Mischa POSLAWSKY <perl@shiar.org>
83 Copyright. All rights reserved.