truncate

ファイルを切り詰める

構文

解説

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 をサポートしていないため例外が投げられます。