【问题标题】:How can I convert a string to a file handle in perl?如何在 perl 中将字符串转换为文件句柄?
【发布时间】:2013-09-12 08:48:55
【问题描述】:

我有一个非常大的字符串$s="dfasdfasdfafd....",将近 1,000,000 个字符。我想将其转换为文件句柄,使其看起来像从文件中读取该字符串。但我不想将它存储到临时文件并读取它。

谁能给我一些建议?

【问题讨论】:

  • 将单个str拆分为数组。

标签: string perl filehandle


【解决方案1】:

打开对字符串的引用:

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

【讨论】:

  • 用同样的方式写一个字符串是没有问题的。对格式有用!
【解决方案2】:

您可能想使用 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) 对象来操作数据时,此解决方案很有用。

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多