用perl表示的结构体数组

 

有如下的从ELF文件中提取的符号信息,该如何存到perl的结构的数组中呢

00000100 T muxISR
0003f334 T AddFloat
000264a4 T addInt

 

0000a0f4 D testFloat1
0000a0f8 D testFloat2
0000a0ec D testVar1
0000a0f0 D testVar2
0000a0f0 B intCounter
00002164 T writeReg
000021a8 T writeReg16

open(my $nm,"<","nmppc.c") or die "Couldn't open file nmppc.c file for read, $!";

$str='';
my @nameList;
my $nameListSize;
my $recordCnt=0;
my $dataReordCnt=0;

my %record=('addr',5,'type','T','name',"testVar1x");
my %record2=('addr'=>5,'name'=>"testVar1x");

%MulHash=(
    'fruit'=>{'apple'=>1,'banana'=>2},
    'vegetable'=>{'potato'=>1},
    'family'=>['wife','husband','son']);
    
print("\$record{'addr'}=$record{'addr'},\$record{'name'}=$record{'name'}");
print("\$record2{'addr'}=$record2{'addr'},\$record2{'name'}=$record2{'name'}\n");
while(!eof($nm))
{
    $str=readline($nm);
    ($record{'addr'},$record{'type'},$record{'name'})=split(/ /,$str);
    
    @testArray = split(/ /,$str);  #character array
    $testStr2=join('',@testArray);
    print("$testStr2\n");
    
    if($record{'type'} eq 'D' or $record{'type'} eq 'd') # string compare use eq,ne but integer compare use ==,!=
    {
        $dataReordCnt++;
        push (@nameList,\%record);   #construct hash array
        unshift(@nameList,\%record);
        #print("\$record{'addr'}=$record{'addr'},\$record{'name'}=$record{'name'},\$record{'type'}=$record{'type'}");
    }
    $recordCnt++;
    #print($str);
}
$nameListSize=@nameList;
print("\n\$recordCnt=$recordCnt,\$dataReordCnt=$dataReordCnt,\@nameList size is $nameListSize\n");

foreach $a (@nameList)
{
    print("$a\n");
}

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值