我是Perl脚本编程的初学者。
我想从文本文件中逐行读取数据,然后分配
值为相应参数的结构
my_input.txt
filed_ind 0x0B uint8.unsigen int
tx_offset 0x0C uint8.unsigen int
rxpowe 0x0D uint8.unsigen int
fillers 0x0A uint8.unsigen int
cellid 0x12 uint8.unsigen int
cellnum 0x13 uint8.unsigen int
编码:
我想将每个值分配给相应的参数 (对于egfiled_ind-> 0x0B),它更像是创建结构。
structure ABC
{
filed_ind 0x0B
tx_offset 0x0c
rxpowe 0x0D
fillers 0x0A
cellid 0x12
cellnum 0x13
}
解码:
从结构我想要提取像my_message一样的数组中的值 (例如my_message [0x0B,0x0c,0x0D,0x0A,0x12,0x13])
我的代码在下面给出
#!/usr/local/bin/perl
use strict;
use warnings;
my $file = 'my_input.txt';
open my $fh, '<', $file or die "Could not open '$file' $!\n";
while (my $line = <$fh>)
{
chomp $line;
my @strings = $line =~ /([a-z_A-Z_0-9-]+)/;
foreach my $s (@strings)
{
print "$1\n";
}
}
我试图从文本文件中提取代码,上面的代码仅用于提取参数。我想要的是我希望从文本文件中生成结构化消息,就像编码一样,再次从消息结构中提取值,如解码。
答案 0 :(得分:0)
目前还不完全清楚自己想做什么。但是这段代码将您感兴趣的数据加载到Perl哈希(这是Perl与结构最接近的东西)然后显示它。
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
use Data::Dumper;
my %struct;
while (<DATA>) {
my ($key, $val) = split;
$struct{$key} = $val;
}
say Dumper \%struct;
__DATA__
filed_ind ox0B uint8.unsigen int
tx_offset ox0c uint8.unsigen int
rxpowe ox0D uint8.unsigen int
fillers ox0A uint8.unsigen int
cellid ox12 uint8.unsigen int
cellnum ox13 uint8.unsigen int
输出结果为:
$VAR1 = {
'fillers' => 'ox0A',
'tx_offset' => 'ox0c',
'cellid' => 'ox12',
'rxpowe' => 'ox0D',
'filed_ind' => 'ox0B',
'cellnum' => 'ox13'
};
答案 1 :(得分:-1)
你的问题不明确,代码商店下面[ox0B,ox0c,ox0D,ox0A,ox12,ox13] 进入my_message。
use strict;
use warnings;
use Tie::IxHash;
my %hash;
tie %hash, 'Tie::IxHash';
my $file = 'my_input.txt';
open my $fh, $file or die "died opening $file";
while (my $line = <$fh>) {
if(length($line) > 1) {
chomp $line;
my @a = split(" ", $line);
$hash{$a[0]} = [$a[1], $a[2], $a[3]];
}
else {
next;
}
}
my @my_message;
foreach my $v (keys %hash) {
push @my_message, $hash{$v}[0] ;
}