我尝试了这个方法和其他一些方法,但每次都会截断文件:
更改为
my $file = 'primes.txt';
sub MAIN ( Int:D $low, Int:D $high where * >= $low ) {
unless my $fh = open $file, :w, :append {
die "Could not open '$file': {$fh.exception}";
}
for $low .. $high {
$fh.put: $_ if .is-prime;
}
}
更改为
open $file, :a
似乎也会截断文件。
这是在macOS上的2018.04。
:w
与:mode<wo>
,:create
,:truncate
的指定方式相同。因此行为完全符合规范。当您指定:w
时,将放弃使用:append
而选择使用:truncate
。请改用:a
代替:w :append
。 - jjmerelo:a
也有同样的问题。 - brian d foyperl6 append-file.p6 1 20
,文件包含:2 3 5 7 11 13 17 19
然后运行perl6 append-file.p6 200 300
,它会追加以下内容:19 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293
(这里包括了19)。至于忽略某些东西,那是完全不同的事情。也许引发异常或警告会导致更多的混乱。 - jjmereloopen $file, :a
不应该截断文件,并且在我上个月构建的Perl6版本上没有截断(尽管我使用的是Windows而不是MacOS)。 - Christoph