perl - 在 For 循环中推送函数以创建许多新数组

标签 perl push

我是 Perl 新手,如果有人能在这方面帮助我,我将非常感激。

foreach $line(@resultans){
    my @newresultans = split "_",$line;

    ## i will have lots more of $newresultans and @ans
    push(@ans1, $newresultans[2]);
    push(@ans2, $newresultans[3]);
    ......
    ......

 }

我的目的是拆分这样的东西,并将它们推送到许多数组中。

接下来的行中的

12、2 等被插入数组 (@ans1)。 6、7 (@ans2) 也是如此,之后还有更多数字,以 _ 分隔。形成 @ans3, @ans4

2_abc_12_6_.......
2_def_2_7_......
.................

我可以尝试这样的事情吗?但它似乎不起作用。如果有人能帮助我,我真的很感激。谢谢!!

$ANS_name ="ANS_$colnm";

foreach $line(@resultans){
    my @newresultans = split "_",$line;

    for($colnm=0;$colnm <=$column[0] ; $colnm++){
        push(@$ANS_name, $newresultans[2]);
    }
}

最佳答案

在我看来,您所说的是每个拆分中都有不同数量的列,并且您需要一种动态(而不是硬编码)的方式来存储它们。我认为您正在寻找的是一个或多个数组:

my @all;
for my $line (@res) {
    my @new = split /_/, $line;   # split takes a regex, not a string (normally)
    for my $index (0 .. $#new) {
        push @{ $all[$index] }, $new[$index];
    }
}

你关于将变量名拼凑在一起的想法非常糟糕,你应该避免这样做。如果不说别的,这正是哈希的作用,但您不必违反任何规则即可使用哈希。我们可以在这里使用哈希,但是没有意义,因为您的数据是串行的,并且您没有固定的名称。例如:

my %hash;
...
for my $index( 0 .. $#res ) {
    $ANS_name ="ANS_$index";
    push @{ $hash{$ANS_name} }, $new[$index];
}

关于perl - 在 For 循环中推送函数以创建许多新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21075904/

相关文章:

bash - Perl $ENV 不访问环境变量

ios - 按下 segue 后我的标签栏 Controller 消失了

ios - iOS 推送通知的位置请求(当应用程序未在后台运行时)

gwt - 有谁知道gwt中的服务器推送/commet技术

mercurial - 推送到两个无法访问的存储库

perl - 如何可视化 perl 文件的代码依赖关系?

macos - 从终端查找并替换文件名中的字符

珀尔 : Dereference between @_ and $_

c++ - 如何开始为 C++ 库编写 Perl 绑定(bind)?

tomcat - primefaces 推送在使用 AWS Tomcat7 的 Safari 中不起作用