$^I = $^O eq 'VMS' ? '_bak' : '.bak';
-plan( tests => 2 );
+plan( tests => 6 );
my @tfiles = (tempfile(), tempfile(), tempfile());
my @tfiles_bak = map "$_$^I", @tfiles;
"foo\nfoo\nfoo\n",
"backup file contents stay the same" );
+SKIP:
+{
+ # based on code, dosish and epoc systems can't do no-backup inplace
+ # edits
+ $^O =~ /^(MSWin32|cygwin|uwin|dos|epoc)$/
+ and skip("Can't inplace edit without backups on $^O", 4);
+
+ our @ifiles = ( tempfile(), tempfile(), tempfile() );
+
+ {
+ for my $file (@ifiles) {
+ runperl( prog => 'print qq(bar\n);',
+ args => [ '>', $file ] );
+ }
+
+ local $^I = '';
+ local @ARGV = @ifiles;
+
+ while (<>) {
+ print "foo$_";
+ }
+
+ is(scalar(@ARGV), 0, "consumed ARGV");
+
+ is( runperl( prog => 'print<>;', args => \@ifiles ),
+ "foobar\nfoobar\nfoobar\n",
+ "normal inplace edit");
+ }
+
+ # test * equivalency RT #70802
+ {
+ for my $file (@ifiles) {
+ runperl( prog => 'print qq(bar\n);',
+ args => [ '>', $file ] );
+ }
+
+ local $^I = '*';
+ local @ARGV = @ifiles;
+
+ while (<>) {
+ print "foo$_";
+ }
+
+ is(scalar(@ARGV), 0, "consumed ARGV");
+
+ is( runperl( prog => 'print<>;', args => \@ifiles ),
+ "foobar\nfoobar\nfoobar\n",
+ "normal inplace edit");
+ }
+
+ END { unlink_all(@ifiles); }
+}