首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么用:w和:append打开仍然覆盖文件?

为什么用:w和:append打开仍然覆盖文件?
EN

Stack Overflow用户
提问于 2019-05-25 13:56:30
回答 1查看 234关注 0票数 9

我得到了下面的代码来尝试打开和写入文件(没有spurt):

代码语言:javascript
复制
sub MAIN {
    my $h = open 'somefile.txt', :w, :a;

    for 1..4 {
        $fh.put: "hello";
    }
    $fh.close;
}

我所期望的是,在每次运行时,它应该在文件中附加4行带有"hello“的内容。然而,它似乎仍然覆盖了文件,在运行2次或更多之后,仍然只有4行。

代码语言:javascript
复制
$ perl6 opening.p6
$ cat somefile.txt
hello
hello
hello
hello
$ perl6 opening.p6
$ cat somefile.txt
hello
hello
hello
hello

添加或删除:a:append似乎不会影响此行为,我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-26 00:04:51

根据open documentation的说法,你想

代码语言:javascript
复制
my $h = open 'somefile.txt', :a;

由一个字母和两个字母组成的速记不是修饰符,但可以单独使用,:w扩展为

代码语言:javascript
复制
:mode<wo>, :create, :truncate

:a扩展到

代码语言:javascript
复制
:mode<wo>, :create, :append

模仿POSIX。

你尝试的组合:w, :append实际上也应该在追加模式下打开文件--但必须先截断它,这看起来并不是特别有用……

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56302171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档