use NativeCall;
sub truncate(Str, int32 --> int32) is native {*}
sub MAIN (Str $file, Int $to) {
given $file.IO {
.e or die "$file doesn't exist";
.w or die "$file isn't writable";
.s >= $to or die "$file is not big enough to truncate";
}
truncate($file, $to) == 0 or die "Truncation was unsuccessful";
}
The external truncate
routine could be replaced with the following line (in which case no need for NativeCall
):
spurt $file, slurp($file).substr($to);