【问题标题】:Use a variable name to name a dynamically created array(or scalar)使用变量名来命名动态创建的数组(或标量)
【发布时间】:2020-10-10 12:24:35
【问题描述】:

我想在@array_mem_depth_$i 中使用$i 值,这样我的动态创建的数组看起来像@array_mem_depth_1024,@array_mem_depth_512。

如何做到这一点?

while(<FH>) {
$line = $_;
chomp($line);
foreach my $i (@depth_uarr) { if ( $line =~ /$i/) {push (@array_mem_depth_${i}, $line);} }
}

谢谢

【问题讨论】:

标签: arrays perl variables


【解决方案1】:

我实际上不建议使用动态名称的变量。虽然这在技术上可能是可行的,但这会使您的代码更加复杂,而且没有明显的好处。

相反,为什么不使用数组引用的散列。根据您的部分代码,这看起来像:

my %h;
while(my $line = <FH>) {
    chomp($line);
    foreach my $i (@depth_uarr) { 
        if ( $line =~ /$i/ ) {
            push @{ $h{$i} }, $line;
        }
    }
}

【讨论】:

  • 嗨。我的 FH 指向的文件只有几行,例如 rf_1024、sr_512、sr_4096、rf_512、rf_435、sr_435、rf_123、sr_321 等。而我的 depth_uarr 是(“rf”、“sr”)。现在,我正在阅读文件。将每一行与数组的内容相匹配,然后将其与数组的值相匹配。例如,我正在读取文件并尝试读取 2 个数组箱 arr_rf 和 arr_sr。例如,arr_rf 将具有匹配 rf 的所有 $lines,并且对于 sr 也是如此。哈希打印出一个数组地址。怎么读?
  • @RamneekSinghKakkar:您需要遍历哈希键,并一一打印数组。或者更好的是,使用像 Data::Dumper 这样的模块来对整个结构进行字符串化。
猜你喜欢
  • 2018-05-06
  • 2021-10-26
  • 2011-10-27
  • 1970-01-01
  • 2014-02-24
  • 2015-10-16
  • 2021-12-31
相关资源
最近更新 更多