示例文件:
### Current GPS Coordinates ###
Just In ... : unknown
### Power Source ###
2
### TPM Status ###
0
### Boot Version ###
GD35 1.1.0.12 - built 14:22:56, Jul 10 232323
我希望将以上文件拆分为以下数组:
@Current0_PS_Coordinates
应如下所示
### Current GPS Coordinates ###
Just In ... : unknown
我喜欢在Perl中做任何帮助吗? (当前节目从评论中添加)
#!/usr/local/lib/perl/5.14.2 -w
my @lines;
my $file;
my $lines;
my $i;
#chomp $i;
$file = 'test.txt'; # Name the file
open(INFO, $file); # Open the file
@lines = <INFO>; # Read it into an array
close(INFO); # Close the file
foreach my $line (@lines) { print "$line"; }
答案 0 :(得分:0)
逐行读取文件。使用chomp删除尾随换行符
如果输入行与此正则表达式/^### (.*) ###/
匹配,那么您的名称为&#34;数组&#34; 1美元
可以从这些匹配中创建像@ Current0_PS_Coordinates这样的命名变量。
但最好将它们用作哈希键,然后将数据存储在具有数组值的哈希中
所以将比赛中的1美元放入&#34; $ lastmatch&#34;并启动一个由此$items{$lastmatch}=[]
之类的哈希引用的空数组,并再读一些
如果输入行与&#34;数组的名称不匹配&#34;上面给出的regexp,如果它不是空的,那么我们假设它是找到的最后一个匹配的值。所以它可以填充在当前数组中,如push @$items{$lastmatch}, $line
完成此操作后,所有数据都将显示在%items hash
中有关更多详细信息,请参阅perldata,perlre,perldsc和perllol文档页面
答案 1 :(得分:0)
一个好的开始就是购买Learning Perl(O&#39; Reilly)这本书。说真的,这是一本很棒的书,每章结尾都有有趣的练习。很容易学习。
1)。为什么你有&#34;我的@ lines&#34;然后&#34;我的$ lines&#34;降下来?我甚至不认为您可以这样做,因为标量和数组是相同的变量,但不同的上下文。例如,@ list可以是(&#39; a&#39;,&#39; b&#39;,&#39; c&#39;)但是调用$ list会返回3,即该列表中的项目数。
2)。什么是&#34;我的$ i&#34;?即使您只是写下想法,也要尝试使用描述性名称。它可以使代码更容易组合在一起。
3)。为什么有一个被评论出来的&#34; chomp $ i&#34;?你想和那个想法一起去哪儿?
4)。尝试使用open的3参数形式。这样可以确保您不会意外销毁您正在阅读的文件:
open INFO, "<", $file;
如果你不确定从哪里开始这个问题,Vorsprung的答案可能并不意味着什么。正则表达式和$ 1之类的变量是您需要阅读书籍才能理解的内容。