インプレース編集のほとんどの例は、1つまたは複数のファイルを反復処理し、一度に1行ずつ読み取りおよび印刷するワンライナーです。
ファイル全体を配列に読み込み、必要に応じて配列を変更し、^Iスイッチを使用してインプレース編集を実行しながら配列を印刷する例は見つかりません。ダイヤモンド演算子からファイル全体を読み取り、内容を編集して内容全体を印刷しようとすると、印刷がARGVOUTではなくSTDOUTに送られ、ARGVOUTが閉じていることがわかります。同じファイルを開いて出力してから印刷することはできますが、なぜそれが必要なのかわかりません。次に例を示します。
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
my $filename = 'test.txt';
push @ARGV, $filename;
$^I = ".bk";
my @file = <>; #Read all records into array
chomp @file;
push @file, qw(add a few more lines);
print join "\n", @file; #This prints to STDOUT, and ARGVOUT is closed. Why?
上記を実行すると、期待どおりにtest.txtファイルのバックアップが作成されますが、編集されたtest.txtは空のままになり、代わりに編集されたコンテンツがSTDOUTに出力されます。