每个Print Statement之后的Perl文件更新

时间:2018-01-24 20:20:17

标签: perl filehandle

当我在Perl中编写文件时,一旦程序完成,每个Print语句的完整内容将在文件上更新。

有没有一种方法可以在执行每个print语句后更新文件?

我尝试设置$ | = 1,但它似乎不起作用。

1 个答案:

答案 0 :(得分:1)

STDOUT设置为非零会在上仅启用当前选定的输出文件句柄的autoflush。默认情况下,这是select,除非您已调用$|进行更改

这意味着,如果您打开了文件的新句柄,IO::Handle将不会影响其行为

相反,您可以使用autoflush模块的use IO::Handle方法。由于v5.14以来任何版本的perl都需要加载IO::File IO::Handle,因此open my $fh, '>', 'myfile.txt' or die $!; $fh->autoflush; 不需要加载print $fh

看起来像这样

void fib(int **fib_array, int n){

    fib_array = malloc(n * sizeof(int*));

    for(int i = 0; i < n; i++){
        fib_array[i] = malloc(sizeof(int));
    }

    for(int i = 0; i < n; i++){
        if (i <= 1){
            fib_array[i][0] = i;
        }

        else{
            fib_array[i][0] = fib_array[i - 2][0] + fib_array[i - 1][0]; 
        }
    }
}


int main(int argc, char **argv) {
    /* do not change this main function */
    int count = strtol(argv[1], NULL, 10);
    int *fib_sequence;

    fib(&fib_sequence, count);
    for (int i = 0; i < count; i++) {
        printf("%d ", fib_sequence[i]);
    }
    free(fib_sequence);
    return 0;
}

在此之后,使用/// Text node, aka you label const textIdx = $('ui_checkbox')[0].childNodes.findIndex((element) => element.nodeType == Node.TextNode); /// Input node const inputIdx = $('ui_checkbox')[0].childNodes.findIndex((element) => element.nodeName == 'INPUT'); if (textIdx < inputIdx ) { // text on the left } else { // text on the right }发送到文件的任何内容都会立即刷新到磁盘