gpt4 book ai didi

perl - 如何使用变量而不是文件句柄

转载 作者:行者123 更新时间:2023-12-02 07:19:16 24 4
gpt4 key购买 nike

我有一个大数据文件dump.all.lammpstrj,我需要将其拆分/分类为一系列文件,例如Z_1_filenameZ_2_filename, Z_3_filename 等基于每条记录中的坐标。

坐标以无序的方式保存,所以我的程序读取每一行并确定应该将这条记录发送到哪个文件。

我使用一个变量,$filehandle = "Z_$i_DUMP"

我希望像这样打开所有可能的文件

for ( my $i = 1; $i <= 100; $i++ ) {
$filehandle = "Z_$i_DUMP";
open $filehandle,'>', "Z_$i_dump.all.lammpstrj.dat";
...
}

但是在运行我的程序时,我收到一条消息

Can't use string ("Z_90_DUMP") as a symbol ref while "strict refs" in use at ...

我不想扫描每个输出文件的所有数据,因为 dump.all.lammpstrj 太大以至于扫描需要很长时间。

有什么方法可以将定义的变量用作文件句柄吗?

最佳答案

让您了解如何做到这一点。将文件句柄放在哈希中(如果按数字索引,则可能是数组)。

use strict;
use warnings;
my %fh; #file handles
open $fh{$_}, '>', "Z_${_}_dump.all.lammpstrj.dat" for 1..100; #open 100 files
for(1..10000){ #write 10000 lines in 100 files
my $random=int(1+rand(100)); #pick random file handle
print {$fh{$random}} "something $_\n";
}
close $fh{$_} for 1..100;

关于perl - 如何使用变量而不是文件句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50660900/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com