我是 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/