我得到以下代码来尝试打开和写入文件(无突增):
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
似乎并不影响这种行为,我想念什么?
答案 0 :(得分:12)
根据open documentation,您想要
my $h = open 'somefile.txt', :a;
一字母和两字母的缩写不是修饰语,而是可以单独使用的,:w
扩展为
:mode<wo>, :create, :truncate
和:a
扩展到
:mode<wo>, :create, :append
模仿POSIX。
您尝试过的组合:w, :append
实际上也应该以附加模式打开文件-但只有在先将其截断之后,这才显得特别有用...