在内存中打开文件意味着什么?

air*_*net 12 perl

你可以在内存中打开文件句柄吗?

内存部分对我来说不清楚,这是什么意思?

如果这意味着你可以使用计算机的内存,那么它是不是已经这样了?

mob*_*mob 20

这意味着您可以使用文件句柄来写入和读取标量变量.

my $var = "";
open my $fh, '>', \$var;
print $fh "asdf";
close $fh;
print $var;          # asdf
Run Code Online (Sandbox Code Playgroud)

最终,这只是另一种方法

$var .= "asdf"
Run Code Online (Sandbox Code Playgroud)

但是有些上下文比使用字符串操作范例更方便或更适合使用文件句柄范例.

例如,从这段代码开始:

open my $fh, '>', $logfile;
...
print $fh $some_message_to_be_logged;
... 500 more print $fh statements ...
close $fh;
Run Code Online (Sandbox Code Playgroud)

但你知道吗?现在我宁愿在标量变量中记录我的日志消息,也许我可以搜索它们,在它们写入磁盘之前对它们进行操作等等.我可以将所有print语句都改为

$logvar .= $some_message_to_be_logged
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,更改open语句更方便.

open my $fh, '>', \$logvar
Run Code Online (Sandbox Code Playgroud)