gpt4 book ai didi

perl - 使用 Perl 从文件中获取数据

转载 作者:行者123 更新时间:2023-12-02 22:35:36 24 4
gpt4 key购买 nike

我的文件为:

<country=HK>

TCN=1
CURR_TYPE="RS"
PRICE=10
COMP_NAME="IBM"

TCN=2
CURR_TYPE="RS"
PRICE=200
COMP_NAME="CTS"

TCN=3
CURR_TYPE="RS"
PRICE=50
COMP_NAME="TCS"


endHK

<country=JN>

TCN=1
CURR_TYPE="YEN"
PRICE=10
COMP_NAME="IBM"

TCN=2
CURR_TYPE="YEN"
PRICE=200
COMP_NAME="CTS"

TCN=3
CURR_TYPE="YEN"
PRICE=50
COMP_NAME="TCS"

</country=JN>

现在我想使用 Perl 脚本从上述文件中的成员中检索值。

我的 Perl 脚本文件是:

#!perl

open(FH, "<a.txt");
@a=<FH>;
$b=$#a;
for ($n=0;$n<$b;$n++)
{
if ($a[$n]=~/HK/)
{
foreach $_ ( @a[$n..($n+300)])
{
if($_ =~ /endHK/){ exit 0;}
print $_;
}
}
}

close(FH);

请附加代码以帮助我从上述文件中检索数据。

最佳答案

虽然粘贴的代码使用了两个不同的结束标记...(endHK</country=JN>),但该文件看起来并不难解​​析。解析简单数据的基本方法可能如下所示:

获取文件:

use autodie;
open(FILE, '<', 'file.txt');
my @data = <FILE>;
close(FILE);

遍历它的内容:

my (%file, $country);
foreach my $line (@data) {

删除不需要的字符:

chomp $line;
$line =~ s/^\s+|\s+$//g;
next unless $line;

并建立一些数据结构:

if($line =~ m!^<country=([^>]+)>!) {
$country = $1;
}
elsif($line =~ m!^([^<=]+)=(.+)$!) {
my ($key, $value) = ($1, $2);
$value =~ s/"//g;

$file{$country}->{$key} = $value;
}

验证输出:

print Dumper \%file;

这应该打印出如下内容:

$VAR1 = {
'HK' => {
'PRICE' => '50',
'CURR_TYPE' => 'RS',
'COMP_NAME' => 'TCS',
'TCN' => '3'
},
'JN' => {
'PRICE' => '50',
'CURR_TYPE' => 'YEN',
'COMP_NAME' => 'TCS',
'TCN' => '3'
}
};

另外:看看Config::General .该模块提供了一种“更安全”的方式来处理此类数据。

关于perl - 使用 Perl 从文件中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11502071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com