Perl - 拆分字符串

时间:2013-07-09 12:33:33

标签: arrays perl split variable-length-array

我正在做一个内容中每个单词的数组。当我尝试拆分并打印长度时,控制台会给我一个巨大的数字,例如111039391231319239188238139123919232913123...(更多行) 为什么呢?

这是我的代码:

$mynames = $texto3;
print $mynames. "\n";
@nameList = split(' ', $texto3);
#print @nameList.length();
for ($to = 0; $to<@nameList.length; $to++){
        if($to<@nameList.length) {
                @nameList[$to] = @nameList[$to] . "_" . @nameList[$to++];
         }
         print $to;
         #print @nameList[$to] . "\n";
 }
 $string_level2 = join(' ', @nameList);
 #print $string_level2;

1 个答案:

答案 0 :(得分:3)

要获取数组的长度,请使用scalar @nameList而不是@nameList.length

典型的for循环在计数时使用小于运算符,例如:

for ( $to = 0; $to < scalar(@nameList); $to++ ) ...

除非您了解副作用,否则不应使用后增量。我相信以下几行:

@nameList[$to] = @nameList[$to] . "_" . @nameList[$to++];

......应写成......


    $nameList[$to] = $nameList[$to] . "_" . $nameList[$to + 1];

最后你使用的比较应该考虑边界条件(因为你在循环中引用$to + 1):

if( $to < (scalar(@nameList) - 1) ) {
  $nameList[ $to ] = $nameList[ $to ] . "_" . $nameList[ $to + 1 ];
}