io – 如何附加到Perl 6中的文件?

前端之家收集整理的这篇文章主要介绍了io – 如何附加到Perl 6中的文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试这个和其他一些东西,但每次都会截断文件
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;
    }
}

更改此项以打开$file,:a似乎也截断了该文件.
这是关于macOS的2018.04.

解决方法

Perl6和open语义基于 POSIX,具有以下映射:
:mode<ro>  --> O_RDONLY
:mode<wo>  --> O_WRONLY
:mode<rw>  --> O_RDWR
:create    --> O_CREAT
:append    --> O_APPEND
:truncate  --> O_TRUNC
:exclusive --> O_EXCL

为方便起见,提供了以下快捷方式:

:r      --> :mode<ro>
:w      --> :mode<wo>,:create,:truncate
:x      --> :mode<wo>,:exclusive
:a      --> :mode<wo>,:append
:update --> :mode<rw>
:rw     --> :mode<rw>,:create
:rx     --> :mode<rw>,:exclusive
:ra     --> :mode<rw>,:append

并非所有Rakudo支持的平台(例如Windows,JVM,甚至POSIX本身)都支持模式和标志的所有可能组合,因此只保证上述组合的行为符合预期(或者至少应该表现得那样).

简而言之,简单:一个绝对应该做你想做的事情,它在我的Windows盒子上也是如此.如果它真的在MacOS上截断,我会认为这是一个错误.

猜你在找的Perl相关文章