我得到了下面的代码来尝试打开和写入文件(没有spurt):
sub MAIN {
my $h = open 'somefile.txt', :w, :a;
for 1..4 {
$fh.put: "hello";
}
$fh.close;
}
我所期望的是,在每次运行时,它应该在文件中附加4行带有"hello“的内容。然而,它似乎仍然覆盖了文件,在运行2次或更多之后,仍然只有4行。
$ perl6 opening.p6
$ cat somefile.txt
hello
hello
hello
hello
$ perl6 opening.p6
$ cat somefile.txt
hello
hello
hello
hello
添加或删除:a
或:append
似乎不会影响此行为,我遗漏了什么?
发布于 2019-05-26 00:04:51
根据open documentation的说法,你想
my $h = open 'somefile.txt', :a;
由一个字母和两个字母组成的速记不是修饰符,但可以单独使用,:w
扩展为
:mode<wo>, :create, :truncate
和:a
扩展到
:mode<wo>, :create, :append
模仿POSIX。
你尝试的组合:w, :append
实际上也应该在追加模式下打开文件--但必须先截断它,这看起来并不是特别有用……
https://stackoverflow.com/questions/56302171
复制相似问题