编辑:请参阅this question了解如何执行@raiph所述的打开字符串文件句柄操作。此外,请阅读@raiph的评论。
以下是如何从字符串打开文件句柄,而不是打开不涉及文件的字符串句柄。感谢@raiph澄清了原始问题的含义。
文档中有一个名为
输入/输出的部分,描述了这个过程。
One way to read the contents of a file is to open the file via the open function with the :r (read) file mode option and slurp in the contents:
my $fh = open "testfile", :r;
my $contents = $fh.slurp-rest;
$fh.close;
Here we explicitly close the filehandle using the close method on the IO::Handle object. This is a very traditional way of reading the contents of a file. However, the same can be done more easily and clearly like so:
my $contents = "testfile".IO.slurp
$contents = slurp "testfile"
By adding the IO role to the file name string, we are effectively able to refer to the string as the file object itself and thus slurp in its contents directly. Note that the slurp takes care of opening and closing the file for you.
这个也可以在Perl5到Perl6页面中找到。
In Perl 5, a common idiom for reading the lines of a text file goes something like this:
open my $fh, "<", "file" or die "$!";
my @lines = <$fh>; # lines are NOT chomped
close $fh;`
In Perl 6, this has been simplified to
my @lines = "file".IO.lines; # auto-chomped
在IO::Handle
文档中可以找到更多关于此操作的参考:
Instances of IO::Handle
encapsulate an handle to manipulate input/output resources. Usually there is no need to create directly an IO::Handle
instance, since it will be done by other roles and methods. For instance, an IO::Path
object provides an open method that returns an IO::Handle
:
my $fh = '/tmp/log.txt'.IO.open;
say $fh.^name; # OUTPUT: IO::Handle