ファイルを切り詰める
truncate
は、ファイルハンドルを通して、ファイルを LENGTH のバイト数に切り詰めます。
切り詰めに成功すれば真を返し、失敗すれば undef
を返します。
基本的に既存のファイルのサイズを切り詰めるなら、追加書き込みモードでファイルを開きます。
次のコードは 123456789
と書かれたテキストファイルを開いて、3 バイトに切り詰めます。
open my $fh, '>>', './sample.txt'; # "123456789"
truncate $fh, 3; # 3 バイトに切り詰める
close $fh; # "123"
truncate
はファイルハンドルではなくファイル名を指定することもできます。
これなら、上記コードは次の 1 行で完結します。
truncate './sample.txt', 3; # 3 バイトに切り詰める
truncate
は文字数でファイルを切り詰めることはできません。
たとえ open my $fh, '>>:encoding(UTF-8)', './sample.txt';
のように
utf8 モードでファイルを開いたとしても、バイト数で切り詰められますので注意してください。
truncate
でファイルを切り詰めたとしても、ファイルポインタの位置は変わりません。
もし切り詰めた後に何かしらの操作をしたいなら、seek
を使って明示的にポインタの位置をセットしてください。
なお、古いバージョンの VMS では truncate
をサポートしていないため例外が投げられます。