我有一个非常大的字符串$s="dfasdfasdfafd...."
,将近 1,000,000 个字符。我想将其转换为文件句柄,使其看起来像从文件中读取该字符串。但我不想将它存储到临时文件并阅读它。
谁能给我一些建议?
我有一个非常大的字符串$s="dfasdfasdfafd...."
,将近 1,000,000 个字符。我想将其转换为文件句柄,使其看起来像从文件中读取该字符串。但我不想将它存储到临时文件并阅读它。
谁能给我一些建议?
打开对字符串的引用:
use strict; use warnings; use autodie;
my $foo = "abc\ndef\n";
open my $fh, "<", \$foo;
while (<$fh>) {
print "line $.: $_";
}
输出:
line 1: abc
line 2: def
您可能想要使用 OO 风格,然后使用IO::String包。
#!/usr/bin/perl
use strict;
use warnings;
use IO::String;
my $s="dfasdfasdfafd....\nabc";
my $io = IO::String->new($s);
while (my $line = $io->getline()) {
print $line;
}
print "\nTHE END\n";
# write new line
$io->print("\nappend new line");
# back to the start
$io->seek(0, 0);
while ($io->sysread(my $line, 512)) {
print $line;
}
您也可以使用IO::Handle包中描述的几乎所有方法。
当某些其他包仅接受 IO::Handle (IO::File) 对象来操作数据时,此解决方案很有用。