有很多方法可以提取感兴趣的数据并对其进行操作。
下面是简单方法
的代码
use strict;
use warnings;
use feature 'say';
my $data = do { local $/; <DATA> };
my $num = $1 if $data =~ /ACCESSION NUMBER:\s+(.*)$/m;
say 'Extracted: ' . $num;
$num =~ s/-//g;
say 'Processed: ' . $num;
__DATA__
<ACCEPTANCE-DATETIME>20201014084217
ACCESSION NUMBER: 0001225208-20-012454
CONFORMED SUBMISSION TYPE: 4
PUBLIC DOCUMENT COUNT: 1
CONFORMED PERIOD OF REPORT: 20201012
FILED AS OF DATE: 20201014
DATE AS OF CHANGE: 20201014
输出
Extracted: 0001225208-20-012454
Processed: 000122520820012454
现在更复杂的方法将事件记录提取到数据结构中以供进一步操作
use strict;
use warnings;
use feature 'say';
use Data::Dumper;
my $data = do { local $/; <DATA> };
my %event = $data =~ /<(.*?)>(.*)$/m;
my %record = $data =~ /(.*?):\s+(.*)$/gm;
$event{record} = \%record;
say '--- Read record ' . '-' x 29;
say $data;
say '--- Content of %record ' . '-' x 22;
say Dumper(\%record);
say '--- Content of %event ' . '-' x 23;
say Dumper(\%event);
say '-' x 45;
my $num0 = $record{'ACCESSION NUMBER'};
my $num1 = $num0;
my $num2 = $num0;
my $num3 = $num0;
my @parts = split '-', $num0;
$num1 =~ s/-//g;
$num2 =~ s/\D//g;
$num3 =~ tr/-//d;
say '$num0 = ' . $num0;
say '$num1 = ' . $num1;
say '$num2 = ' . $num2;
say '$num3 = ' . $num3;
say '@parts = ' . join '', @parts;
__DATA__
<ACCEPTANCE-DATETIME>20201014084217
ACCESSION NUMBER: 0001225208-20-012454
CONFORMED SUBMISSION TYPE: 4
PUBLIC DOCUMENT COUNT: 1
CONFORMED PERIOD OF REPORT: 20201012
FILED AS OF DATE: 20201014
DATE AS OF CHANGE: 20201014
输出
--- Read record -----------------------------
<ACCEPTANCE-DATETIME>20201014084217
ACCESSION NUMBER: 0001225208-20-012454
CONFORMED SUBMISSION TYPE: 4
PUBLIC DOCUMENT COUNT: 1
CONFORMED PERIOD OF REPORT: 20201012
FILED AS OF DATE: 20201014
DATE AS OF CHANGE: 20201014
--- Content of %record ----------------------
$VAR1 = {
'FILED AS OF DATE' => '20201014',
'CONFORMED PERIOD OF REPORT' => '20201012',
'CONFORMED SUBMISSION TYPE' => '4',
'ACCESSION NUMBER' => '0001225208-20-012454',
'PUBLIC DOCUMENT COUNT' => '1',
'DATE AS OF CHANGE' => '20201014'
};
--- Content of %event -----------------------
$VAR1 = {
'record' => {
'FILED AS OF DATE' => '20201014',
'CONFORMED PERIOD OF REPORT' => '20201012',
'CONFORMED SUBMISSION TYPE' => '4',
'ACCESSION NUMBER' => '0001225208-20-012454',
'PUBLIC DOCUMENT COUNT' => '1',
'DATE AS OF CHANGE' => '20201014'
},
'ACCEPTANCE-DATETIME' => '20201014084217'
};
---------------------------------------------
$num0 = 0001225208-20-012454
$num1 = 000122520820012454
$num2 = 000122520820012454
$num3 = 000122520820012454
@parts = 000122520820012454