2013-05-11 47 views
0

我新的Perl和我想要做类似的事情,以我在C.插入功能的数字结果为Perl数组使用for循环

for(i=0;i<32;i++) 
{ 
array[i]= some_function_result(); 
} 
and then print the array 

做,这样做,我是什么试图在Perl中做的是

@data=(); 
for($i=0;$i<32;$i++){ 
    $hexval = unpack('H2',substr($payload,$i,1)); 
     @data[$i]=$hexval; 
} 
print @data; 

这是正确的吗? 我试图用像推的功能(@数据,$ hexval),但导致

96 ...

我知道这是天真......但有人可以帮助我这个请..

+2

你有'严格使用;使用警告;'在脚本的顶部?这会发现你应该使用'$ data [$ i]'而不是'@data [$ i]'作为例子。 – squiguy 2013-05-11 22:18:04

+0

如果我这样做,它给了我这个 全局符号“@data”需要在arraystest.pl线18 全局符号“$ IP”需要在arraystest.pl线23 全局符号明确包的名称明确包名“$ tcp”需要在arraylest.pl第24行显式包名称。 全局符号“$ ip”需要显式包名称在arraylestst.pl第24行。 全局符号“$ payload”需要显式包名称在arraystest.pl第25行 全局符号“$ tcp”需要显式包名在arraystest.pl第25行。 – 2013-05-11 22:26:59

回答

1
int i; 
for (i=0; i<32; i++) { 
    array[i]= some_function_result(); 
} 

for (my $i=0; $i<32; $i++) { 
    $array[$i] = some_function_result(); 
} 

或更好,但

for my $i (0..31) { 
    $array[$i] = some_function_result(); 
} 

流程控制语句在perlsyn记录。

变量类型记录在perldata中。

(有残疾人使用perldoc perlsyn甚至man perlsyn。)

你确实应该始终使用use strict; use warnings;

+0

nope ..即使我使用它,我得到的是我的数组中的32 ..没有其他的.. – 2013-05-11 22:35:03

+0

我向你保证那些两个片段是相同的。我向你保证在你的阵列中只获得“32”是错误的。你会得到'some_function_result'返回的某种类型的32个值(即使是undef)。 – ikegami 2013-05-11 22:37:42

+0

打印它的方式是print @data; 是正确的方法吗? – 2013-05-11 22:40:33