当我在Perl中编写文件时,一旦程序完成,每个Print语句的完整内容将在文件上更新。
有没有一种方法可以在执行每个print语句后更新文件?
我尝试设置$ | = 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
}
发送到文件的任何内容都会立即刷新到磁盘