File-Replace-Inplace
view release on metacpan or search on metacpan
lib/File/Replace/Inplace.pod view on Meta::CPAN
File::Replace::Inplace - Emulation of Perl's C<-i> switch via L<File::Replace|File::Replace>
=head1 Synopsis
=for comment
REMEMBER to keep these examples in sync with 91_author_pod.t
use File::Replace qw/inplace/;
{
my $inpl = inplace( backup=>'.bak' );
local @ARGV = ("file1.txt", "file2.txt");
while (<>) {
chomp;
s/[aeiou]/_/gi;
print $_, "\n";
}
}
Same thing, but from the command line:
perl -MFile::Replace=-i.bak -ple 's/[aeiou]/_/gi' file1.txt file2.txt
t/25_tie_handle_argv.t view on Meta::CPAN
[[], $tf[1], !!1, 3, !!0, "Quz\n"],
[[], $tf[1], !!1, 4, !!1, "Baz" ],
[[], $tf[1], !!0, 4, $BE?!!0:!!1 ],
], 'states' or diag explain \@states;
};
testboth 'basic test with eof()' => sub {
plan $CE ? ( skip_all=>"eof() not supported on tied handles on Perl<5.12" ) : (tests=>1);
my @tf = (newtempfn("Foo\nBar"), newtempfn("Quz\nBaz\n"));
my @states;
local @ARGV = @tf; # this also tests "local"ization after constructing the object
# WARNING: eof() modifies $ARGV (and potentially others), so don't do e.g. [$ARGV, $., eof, eof()]!!
# See e.g. https://www.perlmonks.org/?node_id=289044 and https://www.perlmonks.org/?node_id=1076954
# and https://www.perlmonks.org/?node_id=1164369 and probably more
push @states, [[@ARGV], $ARGV, defined(fileno ARGV), $., eof], eof();
# eof() will open the first file, so record the current state again:
push @states, [[@ARGV], $ARGV, defined(fileno ARGV), $., eof], eof();
push @states, [[@ARGV], $ARGV, defined(fileno ARGV), $., eof, $_], eof() while <>;
# another call to eof() now would open and try to read STDIN (we test that in the STDIN tests)
push @states, [[@ARGV], $ARGV, defined(fileno ARGV), $., eof];
is_deeply \@states, [
t/50_inplace.t view on Meta::CPAN
[[], $tf[1], !!0, !!0, 4, !!1 ],
], 'states' or diag explain \@states;
};
testboth 'basic test with eof()' => sub {
if ($CE) { plan skip_all=>"eof() not supported on tied handles on Perl<5.12" }
elsif ($^O eq 'MSWin32') { plan skip_all=>"eof() acts differently on Win32" }
elsif ($^O eq 'cygwin') { plan skip_all=>"this test doesn't work on cygwin" }
else { plan tests=>9 }
my @tf = (newtempfn("Foo\nBar"), newtempfn("Quz\nBaz\n"));
local @ARGV = @tf; # this also tests "local"ization after constructing the object
my @states;
is select(), 'main::STDOUT', 'STDOUT is selected initially';
push @states, [[@ARGV], $ARGV, defined(fileno ARGV), defined(fileno ARGVOUT), $., eof], eof();
# eof() will open the first file, so record the current state again:
push @states, [[@ARGV], $ARGV, defined(fileno ARGV), defined(fileno ARGVOUT), $., eof], eof();
while (<>) {
print "$ARGV:$.: ".uc;
isnt select(), 'main::STDOUT', 'STDOUT isn\'t selected in loop';
push @states, [[@ARGV], $ARGV, defined(fileno ARGV), defined(fileno ARGVOUT), $., eof, $_], eof();
}
( run in 0.956 second using v1.01-cache-2.11-cpan-49f99fa48dc )