【问题标题】:Perl: Extract data from different sections of a text file simultaneouslyPerl:同时从文本文件的不同部分提取数据
【发布时间】:2014-08-30 01:16:07
【问题描述】:

我想同时从文本文件的不同部分提取数据。是否可以使用两个单独的文件句柄打开文件(如下所示)?或者是否可以缓存第一个文件句柄的位置,然后在我关闭第二个文件句柄时返回到文档中的那个点?

注意:我只是从文本文件中读取数据,从不写入。

open( $filehandle, '<:encoding(UTF-8)', $filename )
    or die "Could not open file '$filename' $!";
$row = <$filehandle>;
{
    replace_unicode_char();
    if ( $row =~ /$table_num/ ) {
        open( $filehandle_reg, '<:encoding(UTF-8)', $filename )
            or die "Could not open file '$filename' $!";
        $line = <$filehandle_reg>;
        if ( $line =~ /Section\_[0-9]+/ ) {
            # Do something...
        }
    }
}

【问题讨论】:

  • 如果文件不是太大,你可以将它存储在字符串或数组中。
  • 这是不可能的,因为文件包含 102K 行...
  • 仅此而已,大约 10MB?但是,是的,您可以将一个文件作为两个不同的文件句柄打开两次,然后分别使用它们——如果有写入操作会变得有点混乱。

标签: string perl


【解决方案1】:

您可以使用seek() 函数在文件中移动,使用tell() 函数获取文件中的当前位置。

因此,不是有两个文件句柄,而是有两个变量在文件中存储一个位置,并使用seek() 在它们之间来回跳转。

【讨论】:

  • 谢谢 Richard...tell() 和 seek() 函数对我来说非常有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多